Comments (13)
What command are you running and getting that error? Normally Tugboat catches the file missing
You can specify the environment variable TUGBOAT_CONFIG_PATH
to specify a specific location for a tugboat config file.
It will also look for a .tugboat
file in the current directory.
I'll open a PR to add this to the docs 👍
from tugboat.
Many thanks, it seems it actually picks up the config file, but ruby still throws this error:
/usr/lib/ruby/1.9.1/rubygems/version.rb:191:in `strip!': can't modify frozen String (RuntimeError)
from /usr/lib/ruby/1.9.1/rubygems/version.rb:191:in `initialize'
from /var/lib/gems/1.9.1/gems/hashie-3.4.6/lib/hashie/extensions/ruby_version_check.rb:10:in `new'
from /var/lib/gems/1.9.1/gems/hashie-3.4.6/lib/hashie/extensions/ruby_version_check.rb:10:in `with_minimum_ruby'
from /var/lib/gems/1.9.1/gems/hashie-3.4.6/lib/hashie/array.rb:8:in `<class:Array>'
from /var/lib/gems/1.9.1/gems/hashie-3.4.6/lib/hashie/array.rb:5:in `<module:Hashie>'
from /var/lib/gems/1.9.1/gems/hashie-3.4.6/lib/hashie/array.rb:4:in `<top (required)>'
from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
from /var/lib/gems/1.9.1/gems/hashie-3.4.6/lib/hashie/mash.rb:2:in `<top (required)>'
from /var/lib/gems/1.9.1/gems/barge-0.12.0/lib/barge/response.rb:4:in `<module:Barge>'
from /var/lib/gems/1.9.1/gems/barge-0.12.0/lib/barge/response.rb:3:in `<top (required)>'
from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
from /var/lib/gems/1.9.1/gems/barge-0.12.0/lib/barge.rb:5:in `<top (required)>'
from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
from /var/lib/gems/1.9.1/gems/tugboat-2.2.2/lib/tugboat/middleware/inject_client.rb:1:in `<top (required)>'
from /var/lib/gems/1.9.1/gems/tugboat-2.2.2/lib/tugboat/middleware.rb:56:in `block in sequence_verify'
from /var/lib/gems/1.9.1/gems/middleware-0.1.0/lib/middleware/builder.rb:38:in `instance_eval'
from /var/lib/gems/1.9.1/gems/middleware-0.1.0/lib/middleware/builder.rb:38:in `initialize'
from /var/lib/gems/1.9.1/gems/tugboat-2.2.2/lib/tugboat/middleware.rb:53:in `new'
from /var/lib/gems/1.9.1/gems/tugboat-2.2.2/lib/tugboat/middleware.rb:53:in `sequence_verify'
from /var/lib/gems/1.9.1/gems/tugboat-2.2.2/lib/tugboat/cli.rb:66:in `verify'
from /var/lib/gems/1.9.1/gems/thor-0.18.1/lib/thor/command.rb:27:in `run'
from /var/lib/gems/1.9.1/gems/thor-0.18.1/lib/thor/invocation.rb:120:in `invoke_command'
from /var/lib/gems/1.9.1/gems/thor-0.18.1/lib/thor.rb:363:in `dispatch'
from /var/lib/gems/1.9.1/gems/thor-0.18.1/lib/thor/base.rb:439:in `start'
from /var/lib/gems/1.9.1/gems/tugboat-2.2.2/bin/tugboat:10:in `<top (required)>'
from /usr/local/bin/tugboat:23:in `load'
from /usr/local/bin/tugboat:23:in `<main>'
Is there a bug in parsing the config file?
from tugboat.
Hmm, possibly. Can you post your config file here, redacted API key if needed?
from tugboat.
tugboat config
Path: /root/.tugboat
---
authentication:
access_token: [REDACTED]
ssh:
ssh_user: root
ssh_key_path: [REDACTED]
ssh_port: '22'
defaults:
region: lon1
image: ubuntu-14-04-x64
size: 512mb
ssh_key: ''
private_networking: 'true'
backups_enabled: 'false'
ip6: 'false'
from tugboat.
@vladimirghetau Can you also post the raw yaml into this ticket?
Also, what command are you running to get the error?
from tugboat.
@petems many thanks, I am running latest tugboat version, ubuntu 14.04, ruby 2.3.1, and this error comes with any command ( in this instance it's tugboat images
).
I can prevent the error by sending the command from the exact folder where the config file is located, but the only way to replicate this error is using Jenkins or by navigating in a different folder than the one where .tugboat resides.
Raw Yaml:
---
authentication:
access_token: [REDACTED]
ssh:
ssh_user: root
ssh_key_path: "[REDACTED]"
ssh_port: '22'
defaults:
region: lon1
image: ubuntu-14-04-x64
size: 512mb
ssh_key: ''
private_networking: 'true'
backups_enabled: 'false'
ip6: 'false'
Again, this config works, but only when I run tugboat from the same path where it resides.
from tugboat.
Ah, yeah it could be a Ruby 2.3.1 issue, I remember there being a frozen string issue with 2.3.1
https://wyeworks.com/blog/2015/12/1/immutable-strings-in-ruby-2-dot-3
Let me see if I can test that
from tugboat.
@vladimirghetau Can you run with DEBUG=1
for me?
from tugboat.
I actually did, it seems the ruby component fails before the DEBUG=1
is even considered.
My assumption is it fails to process the content of the file due to some character that it doesn't understand while using a string function native to ruby.
A way to replicate this would be:
- get a clean vm, install ruby and then
gem install tugboat
- run
tugboat authorize
, the error will show up, see below
The output to what you asked was:
root@ubuntu-512mb-nyc3-01:
'# DEBUG=1# tugboat authorize
root@ubuntu-512mb-nyc3-01:
/usr/lib/ruby/1.9.1/rubygems/version.rb:191:instrip!': can't modify frozen String (RuntimeError) from /usr/lib/ruby/1.9.1/rubygems/version.rb:191:in
initialize'
from /var/lib/gems/1.9.1/gems/hashie-3.4.6/lib/hashie/extensions/ruby_version_check.rb:10:innew' from /var/lib/gems/1.9.1/gems/hashie-3.4.6/lib/hashie/extensions/ruby_version_check.rb:10:in
with_minimum_ruby'
from /var/lib/gems/1.9.1/gems/hashie-3.4.6/lib/hashie/array.rb:8:in<class:Array>' from /var/lib/gems/1.9.1/gems/hashie-3.4.6/lib/hashie/array.rb:5:in
module:Hashie'
from /var/lib/gems/1.9.1/gems/hashie-3.4.6/lib/hashie/array.rb:4:in<top (required)>' from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in
require'
from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:inrequire' from /var/lib/gems/1.9.1/gems/hashie-3.4.6/lib/hashie/mash.rb:2:in
<top (required)>'
from /var/lib/gems/1.9.1/gems/barge-0.12.0/lib/barge/response.rb:4:in<module:Barge>' from /var/lib/gems/1.9.1/gems/barge-0.12.0/lib/barge/response.rb:3:in
<top (required)>'
from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:inrequire' from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in
require'
from /var/lib/gems/1.9.1/gems/barge-0.12.0/lib/barge.rb:5:in<top (required)>' from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in
require'
from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:inrequire' from /var/lib/gems/1.9.1/gems/tugboat-2.2.2/lib/tugboat/middleware/inject_client.rb:1:in
<top (required)>'
from /var/lib/gems/1.9.1/gems/tugboat-2.2.2/lib/tugboat/middleware.rb:56:inblock in sequence_verify' from /var/lib/gems/1.9.1/gems/middleware-0.1.0/lib/middleware/builder.rb:38:in
instance_eval'
from /var/lib/gems/1.9.1/gems/middleware-0.1.0/lib/middleware/builder.rb:38:ininitialize' from /var/lib/gems/1.9.1/gems/tugboat-2.2.2/lib/tugboat/middleware.rb:53:in
new'
from /var/lib/gems/1.9.1/gems/tugboat-2.2.2/lib/tugboat/middleware.rb:53:insequence_verify' from /var/lib/gems/1.9.1/gems/tugboat-2.2.2/lib/tugboat/cli.rb:66:in
verify'
from /var/lib/gems/1.9.1/gems/thor-0.18.1/lib/thor/command.rb:27:inrun' from /var/lib/gems/1.9.1/gems/thor-0.18.1/lib/thor/invocation.rb:120:in
invoke_command'
from /var/lib/gems/1.9.1/gems/thor-0.18.1/lib/thor.rb:363:indispatch' from /var/lib/gems/1.9.1/gems/thor-0.18.1/lib/thor/base.rb:439:in
start'
from /var/lib/gems/1.9.1/gems/tugboat-2.2.2/bin/tugboat:10:in<top (required)>' from /usr/local/bin/tugboat:23:in
load'
from /usr/local/bin/tugboat:23:in `
I can provide access to an isolated VM for investigation if needed.
from tugboat.
An isolated VM would be awesome, I can't replicate on my machine with OSX Ruby 2.3.1
from tugboat.
thanks @petems - trying to find an email or any way of contacting you privately and cannot. Any chance you can email me a DM on twitter (just followed you).
from tugboat.
@vladimirghetau Cool, followed back! 👍
from tugboat.
Thanks for the machine, it looks like a non related issue to Tugboat, it turns out the problem was an old version of Rubygems (See rubygems/bundler#3187)
$ gem install rubygems-update
$ update_rubygems
$ gem update --system
$ gem install tugboat
$ tugboat authorize
Note: You can get your Access Token from https://cloud.digitalocean.com/settings/tokens/new
Enter your access token:
from tugboat.
Related Issues (20)
- Seems to be a limit to the number of retrieved droplets HOT 3
- Commands like "droplets" need formatting switches HOT 6
- Wrong color for successful snapshot creation? HOT 1
- bug in connect HOT 1
- Show private ip alongside public ip in droplets list HOT 1
- `tugboat create` with options is not picking up default ssh key HOT 8
- Domain and records support HOT 2
- API call to add ssh keys HOT 3
- Does Tugboat Support Multiple Teams Yet? HOT 8
- feature request: have tugboat support the block storage api HOT 3
- suggestion: ability to list and remove snapshots usign tugboat HOT 3
- Change to droplet_kit for API HOT 2
- This compared to doctl? HOT 1
- Cross-site Scripting (XSS) Through Unescaped JSON String in petems/tugboat (master)
- Insecure Storage Of Cache Files in petems/tugboat (master) HOT 1
- Arbitrary Code Injection Or Denial Of Service (DoS) Through Unsafe Middleware in petems/tugboat (master)
- Release Tugboat for 2.4.1 support HOT 2
- snapshot not working HOT 1
- I am getting "Failed to create Droplet: found unpermitted parameters: backups_enabled"
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from tugboat.