Cucumber: command not found (suddenly broken) - ruby

I am trying to self-teach Cucumber and suddenly my terminal is giving me the error
-bash: cucumber: command not found
I have checked out a couple of 'similar' threads on SA and their either Rails related or aren't particularly helpful. For example this one
says about checking your gem env but doesn't give any clue as to what to check it for (at least for a UNIX/Mac noob like me). As the above post suggests typing which cucumber gives no output and my gem env looks something like this:
- RUBYGEMS VERSION: 2.4.6
- RUBY VERSION: 2.1.3 (2014-09-19 patchlevel 242) [x86_64-darwin14.0]
- INSTALLATION DIRECTORY: /Users/username/.rvm/gems/ruby-2.1.3
- RUBY EXECUTABLE: /Users/username/.rvm/rubies/ruby-2.1.3/bin/ruby
- EXECUTABLE DIRECTORY: /Users/username/.rvm/gems/ruby-2.1.3/bin
- SPEC CACHE DIRECTORY: /Users/username/.gem/specs
- SYSTEM CONFIGURATION DIRECTORY: /etc
- RUBYGEMS PLATFORMS:
- ruby
- x86_64-darwin-14
- GEM PATHS:
- /Users/username/.rvm/gems/ruby-2.1.3
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :backtrace => false
- :bulk_threshold => 1000
- REMOTE SOURCES:
- https://rubygems.org/
- SHELL PATH:
- /usr/local/bin/Users/username/.rvm/gems/ruby-2.1.3/bin
- /Users/username/.rvm/gems/ruby-2.1.3#global/bin
- /Users/username/.rvm/rubies/ruby-2.1.3/bin
- /usr/local/bin
- /usr/bin
- /bin
- /usr/sbin
- /sbin
- /Users/username/.rvm/bin
if anyone can shed any light on this I'd really appreciate it. Cucumber was working fine not so long ago.

doesn't work
сucumber --guess --tags #ie features...
works
bundle exec cucumber --tags #ie features...
The problem is only on IE9.
Is that problem of version ruby, cucumber?
Ruby 2.2.0 Cucumber 1.3.18

Related

Have Twurl installed, but I can't access it

I have installed Twurl but for some reason I still can't use it. I believe I have it installed because it shows up when I type the ls command. Then I am able to navigate to the folder that Twurl is contained in. However, I am not able to go into the Twurl folder because it says it is not a directory. I am able to use the command open twurl, which opens up a seperate terminal window with a lot of information about Twurl, but I can't type anything. One other thing, when I try and run twurl authorize I get this response: twurl: command not found So my question is, how do I go about getting twurl to work now? Such that I can run the twurl authorize command.
gem env output:
- RUBYGEMS VERSION: 3.1.4
- RUBY VERSION: 2.7.2 (2020-10-01 patchlevel 137) [x86_64-darwin18]
- INSTALLATION DIRECTORY: /usr/local/lib/ruby/gems/2.7.0
- USER INSTALLATION DIRECTORY: /Users/CharlieBagin/.gem/ruby/2.7.0
- RUBY EXECUTABLE: /usr/local/opt/ruby/bin/ruby
- GIT EXECUTABLE: /usr/bin/git
- EXECUTABLE DIRECTORY: /usr/local/lib/ruby/gems/2.7.0/bin
- SPEC CACHE DIRECTORY: /Users/CharlieBagin/.gem/specs
- SYSTEM CONFIGURATION DIRECTORY: /usr/local/Cellar/ruby/2.7.2/etc
- RUBYGEMS PLATFORMS:
- ruby
- x86_64-darwin-18
- GEM PATHS:
- /usr/local/lib/ruby/gems/2.7.0
- /Users/CharlieBagin/.gem/ruby/2.7.0
- /usr/local/Cellar/ruby/2.7.2/lib/ruby/gems/2.7.0
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :backtrace => false
- :bulk_threshold => 1000
- REMOTE SOURCES:
- https://rubygems.org/
- SHELL PATH:
- /usr/local/opt/ruby/bin
- /Users/CharlieBagin/anaconda3/bin
- /Library/Frameworks/Python.framework/Versions/3.6/bin
- /usr/local/bin
- /usr/bin
- /bin
- /usr/sbin
- /sbin
I think I might have installed it in two places. I originally used gem install twurl, but then it wasn't working and I was trying some things and used bundler to install at some point too.

uninitialized constant Timer::Timers

I am trying to do a task periodically, and I have seen this. I have installed the gem 'timer' using bundle install
and then here is my Timer class:
require 'timers'
class Timer
def initialize
timers = Timers::Group.new
timers.every(5) { puts "Another 5 seconds" }
end
end
but when i run the class i face with the error:
`require': cannot load such file -- timers (LoadError)
and here is the output of my gem env :
RubyGems Environment:
- RUBYGEMS VERSION: 2.5.1
- RUBY VERSION: 2.3.0 (2015-12-25 patchlevel 0) [x86_64-linux]
- INSTALLATION DIRECTORY: /usr/local/rvm/gems/ruby-2.3.0
- USER INSTALLATION DIRECTORY: /home/ubuntu/.gem/ruby/2.3.0
- RUBY EXECUTABLE: /usr/local/rvm/rubies/ruby-2.3.0/bin/ruby
- EXECUTABLE DIRECTORY: /usr/local/rvm/gems/ruby-2.3.0/bin
- SPEC CACHE DIRECTORY: /home/ubuntu/.gem/specs
- SYSTEM CONFIGURATION DIRECTORY: /etc
- RUBYGEMS PLATFORMS:
- ruby
- x86_64-linux
- GEM PATHS:
- /usr/local/rvm/gems/ruby-2.3.0
- /usr/local/rvm/gems/ruby-2.3.0#global
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :backtrace => false
- :bulk_threshold => 1000
- "gem" => "--no-document"
- "install" => "--no-rdoc --no-ri"
- "update" => "--no-rdoc --no-ri"
- REMOTE SOURCES:
- https://rubygems.org/
- SHELL PATH:
- /home/ubuntu/.nvm/versions/node/v4.4.3/bin
- /usr/local/rvm/gems/ruby-2.3.0/bin
- /usr/local/rvm/gems/ruby-2.3.0#global/bin
- /usr/local/rvm/rubies/ruby-2.3.0/bin
- /mnt/shared/bin
- /home/ubuntu/workspace/node_modules/.bin
- /home/ubuntu/bin
- /usr/local/sbin
- /usr/local/bin
- /usr/sbin
- /usr/bin
- /sbin
- /bin
- /mnt/shared/sbin
- /opt/gitl
- /opt/go/bin
- /mnt/shared/c9/app.nw/bin
- /usr/local/rvm/bin
This error tells us the code you are trying to load is not on the LOAD_PATH. When you require 'timers' you are telling Ruby to search the LOAD_PATH for a file called timers.rb and it cannot be located. Installing the gem does not put the gem on your load path.
It sounds like you are not using Bundler to manage your dependencies. Once you start depending on 3rd party code, you really should start using Bundler. It will put all the code you need on the LOAD_PATH and provide a ton of other helpful features.
If you are just messing around, one option you can do is:
ruby -I <path/to/timers/lib>
This will allow Ruby to locate timers.rb

encrypted_strings (LoadError) received when running spotify ruby script

I am trying to run a Ruby script to setup a token exchange with spotify. I know nothing about Ruby, so am at a loss at how to resolve the following error in response to the following command:
ruby ./spotify_token_swap.rb
/Users/jeff/.rvm/rubies/ruby-2.1.5-dev/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:54:in `require': cannot load such file -- encrypted_strings (LoadError)
from /Users/jeff/.rvm/rubies/ruby-2.1.5-dev/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:54:in `require'
from ./spotify_token_swap.rb:6:in `<main>'
Line 54 of kernel_require.rb is:
return gem_original_require(path)
If it helps, here is my RubyGems environment:
gem env
RubyGems Environment:
- RUBYGEMS VERSION: 2.4.5
- RUBY VERSION: 2.1.5 (2014-11-13 patchlevel 273) [x86_64-darwin14.0]
- INSTALLATION DIRECTORY: /Users/jeff/.rvm/gems/ruby-2.1.5-dev
- RUBY EXECUTABLE: /Users/jeff/.rvm/rubies/ruby-2.1.5-dev/bin/ruby
- EXECUTABLE DIRECTORY: /Users/jeff/.rvm/gems/ruby-2.1.5-dev/bin
- SPEC CACHE DIRECTORY: /Users/jeff/.gem/specs
- SYSTEM CONFIGURATION DIRECTORY: /etc
- RUBYGEMS PLATFORMS:
- ruby
- x86_64-darwin-14
- GEM PATHS:
- /Users/jeff/.rvm/gems/ruby-2.1.5-dev
- /Users/jeff/.rvm/gems/ruby-2.1.5-dev#global
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :backtrace => false
- :bulk_threshold => 1000
- REMOTE SOURCES:
- https://rubygems.org/
- SHELL PATH:
- /Users/jeff/.rvm/gems/ruby-2.1.5-dev/bin
- /Users/jeff/.rvm/gems/ruby-2.1.5-dev#global/bin
- /Users/jeff/.rvm/rubies/ruby-2.1.5-dev/bin
- /Users/jeff/.rvm/bin
- /usr/local/bin
- /usr/bin
- /bin
- /usr/sbin
- /sbin
- /opt/ImageMagick/bin
I am guessing that there is either a missing gem, or a problem with my path. But I really don't know. Can someone provide some handholding on how to resolve this problem?
Good debugging idea, but you went a bit too deep :) You don't need to know how Kernel.require works, just that
If the file named cannot be found, a LoadError will be raised.
You probably just need to install the encrypted_strings gem.

<RubyGems> How to change gem environment settings?

I installed rbenv and set up ruby and gems. Now if I run gem env then I got the following:
RubyGems Environment:
- RUBYGEMS VERSION: 2.2.2
- RUBY VERSION: 2.1.0 (2013-12-25 patchlevel 0) [x86_64-darwin13.0]
- INSTALLATION DIRECTORY: /Users/myusername/Tools/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0
- RUBY EXECUTABLE: /Users/myusername/Tools/.rbenv/versions/2.1.0/bin/ruby
- EXECUTABLE DIRECTORY: /Users/myusername/Tools/.rbenv/versions/2.1.0/bin
- SPEC CACHE DIRECTORY: /Users/myusername/.gem/specs
- RUBYGEMS PLATFORMS:
- ruby
- x86_64-darwin-13
- GEM PATHS:
- /Users/myusername/Tools/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0
- /Users/myusername/.gem/ruby/2.1.0
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :backtrace => false
- :bulk_threshold => 1000
- REMOTE SOURCES:
- https://rubygems.org/
- SHELL PATH:
- /Users/myusername/Tools/.rbenv/versions/2.1.0/bin
- /Users/myusername/Tools/.rbenv/libexec
- /Users/myusername/Tools/.rbenv/plugins/ruby-build/bin
- /opt/local/bin
- /opt/local/sbin
- /Users/myusername/Tools/.rbenv/shims
- /usr/bin
- /bin
- /usr/sbin
- /sbin
- /usr/local/bin
- /Users/myusername/Tools/./bin
- /Users/myusername/Tools/.rbenv/bin
Well.. all looks good except for SPEC CACHE DIRECTORY and GEM PATHS, all others have self-configured paths. (So I really don't want any dev-related directories directly placed in my user home folder.) Is there a way to flexibly change these two env variables without affecting normal functioning of ruby, gem and rbenv etc.?
Thanks!
Actually I searched online and found the solution.
Just put the following in your .profile (Max OS) or .bashrc (Linux)
export GEM_PATH=/Users/myusername/Tools/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0
export GEM_SPEC_CACHE=/Users/myusername/Tools/.rbenv/versions/2.1.0/lib/ruby/gems/specs
Make sure the folder you put there existed. Then source the .profile or .bashrc, or simply restart your terminal. It is tested working now my env is correct.
Reference:
https://github.com/rubygems/rubygems/pull/489

Textmate + RVM + Rake = Rake not using expected gem environment

I am using:
TextMate: version 2.0-alpha.9511
rvm: 1.25.15 (stable)
ruby: version 2.1.0p0
oh-my-zshell: 5.0.2
Mac OS X: 10.9.1 (Mavericks)
I have rvm and textmate set up to use
TM_RUBY=/Users/<myuser>/.rvm/bin/rvm-auto-ruby
The problem:
when I try to run my rake tasks using the rake bundle in textmate, I get some errors about the file not loading: "cannot load such file -- rubocop/rake_task"
The clue:
I changed my rakefile so that it simply reports the "gem env" for the default task.
When I then run the task, I see a completely different gem environment, than I would see if I used rake at the terminal command line.
RakeMate v2.0.0
>>> /Users/Johno/Projects/puzzles/triangle/Rakefile
RubyGems Environment:
- RUBYGEMS VERSION: 2.0.3
- RUBY VERSION: 2.0.0 (2013-06-27 patchlevel 247) [universal.x86_64-darwin13]
- INSTALLATION DIRECTORY: /Library/Ruby/Gems/2.0.0
- RUBY EXECUTABLE: /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby
- EXECUTABLE DIRECTORY: /usr/bin
- RUBYGEMS PLATFORMS:
- ruby
- universal-darwin-13
- GEM PATHS:
- /Library/Ruby/Gems/2.0.0
- /Users/Johno/.gem/ruby/2.0.0
- /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/gems/2.0.0
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :backtrace => false
- :bulk_threshold => 1000
- REMOTE SOURCES:
- https://rubygems.org/
Whereas I see this when running
$ gem env
in my terminal, for my project
RubyGems Environment:
- RUBYGEMS VERSION: 2.2.0.rc.1
- RUBY VERSION: 2.1.0 (2013-12-25 patchlevel 0) [x86_64-darwin12.0]
- INSTALLATION DIRECTORY: /Users/Johno/.rvm/gems/ruby-2.1.0#puzzles
- RUBY EXECUTABLE: /Users/Johno/.rvm/rubies/ruby-2.1.0/bin/ruby
- EXECUTABLE DIRECTORY: /Users/Johno/.rvm/gems/ruby-2.1.0#puzzles/bin
- SPEC CACHE DIRECTORY: /Users/Johno/.gem/specs
- RUBYGEMS PLATFORMS:
- ruby
- x86_64-darwin-12
- GEM PATHS:
- /Users/Johno/.rvm/gems/ruby-2.1.0#puzzles
- /Users/Johno/.rvm/gems/ruby-2.1.0#global
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :backtrace => false
- :bulk_threshold => 1000
- REMOTE SOURCES:
- https://rubygems.org/
- SHELL PATH:
- /Users/Johno/.rvm/gems/ruby-2.1.0#puzzles/bin
- /Users/Johno/.rvm/gems/ruby-2.1.0#global/bin
- /Users/Johno/.rvm/rubies/ruby-2.1.0/bin
- /Users/Johno/.rvm/bin
- /usr/local/bin
- /Users/Johno/Projects/Scripts/Ruby
- /Users/Johno/Projects/Scripts/bash
- /Users/Johno/Projects/Scripts/perl
- /Users/Johno/Projects/Scripts/Geek Tool
- /usr/bin
- /bin
I suspect that textmate is trying to use the "wrong" rake, or failing to set up the environment properly.
I think the problem may lie in the ruby bundle command from text mate:
#!/usr/bin/env bash
export RUBYLIB="$TM_BUNDLE_SUPPORT/RakeMate${RUBYLIB:+:$RUBYLIB}"
export TM_RAKE=$(which "${TM_RAKE:-rake}")
"/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby" -- "$TM_BUNDLE_SUPPORT/RakeMate/rake_mate.rb"
It appears to be using a specific ruby (1.8) rather than the rvm project specific ruby
Does anyone have a suggestion as to how to resolve this?
Thank you,
John Schank
Followed the advice to set TM_RAKE and it didn't help.
I tried both the suggested setting, and using the results of which rake
/Users/Johno/.rvm/gems/ruby-2.1.0#puzzles/bin/rake
When using my TM_RAKE, is get a different error
RakeMate v2.0.0
>>> /Users/Johno/Projects/puzzles/triangle/Rakefile
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/dependency.rb:296:in `to_specs': Could not find 'rake' (>= 0) among 5 total gem(s) (Gem::LoadError)
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/dependency.rb:307:in `to_spec'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_gem.rb:47:in `gem'
from /Users/Johno/.rvm/gems/ruby-2.1.0#puzzles/bin/rake:22:in `<main>'
This happens to be the same error I get when I try to use the rubocop.tmbundle
It still looks to me like the gem environment is not being passed to the child process.
I solved my own problem.
Here are the details for anyone else who has this problem...
First, the answer in this question TextMate, rvm and TM_RUBY
is almost perfect.
I had to create a textmate_ruby, and a textmate_rake script, and reference them in the variables in text mate: TM_RUBY, and TM_RAKE.
Second, since I'm using zsh, I had to change the shebang line in the textmate_xxx scripts to use zsh.
Finally, the key that helped me arrive at the correct solution is that I modified my project rakefile to :
task :default do
system "gem env"
system "ruby --version"
system "pwd"
system "printenv"
end
Then when I ran the rake task in textmate, it would dump the current values of my environment, ruby version, current directory, and gem environment. This really helped to see what was going on.
It seems that TextMate is still using your system rake instead of rvm's.
Try to set TM_RAKE in addition to TM_RUBY:
TM_RAKE=$HOME/.rvm/bin/rake
This also applies to rbenv, where you would set TM_RAKE to $HOME/.rbenv/shims/rake.

Resources