annotate cannot find rake executable - ruby-on-rails-3

I'm using ctran/annotate_models to annotate my models and route files. I'm now getting an error:
$ annotate -r
$ROOT/usr/lib/ruby/gems/1.9.1/gems/bundler-1.0.10/lib/bundler/shared_helpers.rb:151:in `block in cripple_rubygems': can't find executable rake (Gem::Exception)
from $ROOT/usr/lib/ruby/gems/1.9.1/bin/rake:19:in `<main>'
Route file annotated.
...with the result that annotate adds the comment block to config/routes.db, but the comment is empty. The message suggests that annotate can't find rake, but rake is certainly there:
$ which rake
$ROOT/usr/bin/rake
and here's what rake says about the current configuration:
$ rake about
About your application's environment
Ruby version 1.9.2 (x86_64-darwin10.6.0)
RubyGems version 1.3.7
Rack version 1.2
Rails version 3.0.5
Active Record version 3.0.5
Action Pack version 3.0.5
Active Resource version 3.0.5
Action Mailer version 3.0.5
Active Support version 3.0.5
Application root .../myapp
Environment development
The only things that's slightly odd in my Gemfile is that I am specifying a previous version of rake:
# file: Gemfile
source 'http://rubygems.org'
gem 'rails', '3.0.5'
gem 'rake', '0.8.7' # workaround "uninitialized constant Rake::DSL" bug
...
gem 'annotate', '2.4.0'
Any ideas of what's wrong?

Try using bundle exec rake instead.

Related

Rails 4.0.8 Bundle Install keeps poiting to the wrong Ruby version

I'm working through the Railstutorial with Rails 4.0.8. and Ruby 2.1.2. Recently Bundle Install, Rails Console and Rails Server seem to ALWAYS choose the alternate version of Ruby from whichever is specify in my Gemfile. When I enter ruby -v it also always suggests the OTHER version.
Is this a bash_profile problem and how can I set it to permanently leave the internal OS X Ruby (v2.0.0) alone and just use v 2.1.2 where all my gems are installed?
I'm using rvm and Homebrew... I suspect both may be adding to the confusion...
Any helpful tips?
First...
micanansmbp:sample_app micanan$ rails console
Your Ruby version is 2.1.2, but your Gemfile specified 2.0.0
Then...
micanansmbp:sample_app micanan$ bundle install
Your Ruby version is 2.0.0, but your Gemfile specified 2.1.2
Finally...
micanansmbp:sample_app micanan$ bundle install
Your Ruby version is 2.0.0, but your Gemfile specified 2.1.2
micanansmbp:sample_app micanan$ ruby -v
ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-darwin13.0]
micanansmbp:sample_app micanan$

Bundle exec doesn't work

I am trying to use rails-erd. The last time I used it was in February and worked fine
I tried using erd and bundle exec erd
I am getting this error.. I have rails 4 in another project, but in this project I use rails 3.2.15 in the gem file
Loading application in 'my_app'...
WARN: Unresolved specs during Gem::Specification.reset:
activerecord (>= 3.0)
i18n (>= 0.6.4, ~> 0.6)
multi_json (~> 1.3)
tzinfo (~> 0.3.37)
WARN: Clearing out unresolved specs.
Please report a bug if this causes problems.
Failed: Gem::LoadError: You have already activated activesupport 4.0.0, but your Gemfile requires activesupport 3.2.15. Using bundle exec may solve this.
What does this mean and how do I solve this?
The error shows that you have already activated activesupport 4.0.0 but in your gemfile.lock file the version of the activesupport is 3.2.15.
So simply delete the gemfile.lock file and again bundle install
It will take the latest version of activesupportor, or either you can change the version manually.
In the Gemfile of the app specify the version of Rails if you haven't done so:
gem 'rails', '3.2.15'
Run bundle install then try running the script again using bundle exec.
If it still doesn't work try uninstalling rails 4 and then running it.
gem uninstall rails
Ideally if you're executing your script with bundle exec it always execute the script in the context of the current bundle using the Gemfile.

rails -v shows wrong version when using rvm

I've just tried to update to Rails 3.1.3 using RVM with the following commands:
rvm install ruby-1.9.3-p0
rvm --default use ruby-1.9.3-p0
If I query the current version or ruby:
ruby -v
I get the correct version: ruby 1.9.3p0 (2011-10-30 revision 33570) [x86_64-darwin10.8.0]
Then to update the gems:
gem update --system
This gives me version 1.8.24
I then create my gemset and set it as my default:
rvm ruby-1.9.3-p0#rails313 --create --default
and finally install the Rails gem:
gem install rails
When I query the version of rails:
rails -v
I get Rails 3.0.11 ... my old version of Rails
If I try to start my Rails server
rails s
I get a huge error:
.rvm/gems/ruby-1.9.3-p0#rails313/gems/activesupport-3.0.11/lib/active_support dependencies.rb:239:in `require': dlopen(/Users/lss_dev/.rvm/gems/ruby-1.9.3-p0#rails313/gems/ruby-debug-base19-0.11.25/lib/ruby_debug.bundle, 9): Symbol not found: _ruby_current_thread (LoadError)
With a lot of complaints about dependencies.
My gemfile.lock does contain the following block:
rails (3.0.11)
actionmailer (= 3.0.11)
actionpack (= 3.0.11)
activerecord (= 3.0.11)
activeresource (= 3.0.11)
activesupport (= 3.0.11)
bundler (~> 1.0)
railties (= 3.0.11)
Does this have something to do with it or should I even be touching the gemfile.lock file??
I'm using rvm version 1.10.0, any help would be appreciated
To answer my own (extended) question...
Trashing the gemfile.lock file allowed me to just run
bundle install
ensuring that I had my Rails gem set to the correct version (3.1.3), which worked. The issue that I was running into then was when I started my rails server I got the following browser error
undefined method `consider_all_requests_local' for ActionController::Base:Class
Initially I thought this was due to some routing changes in Rails 3.1.* As it turned out in my application_controller.rb file I was dealing with 404 errors and had the following block:
unless ActionController::Base.consider_all_requests_local
rescue_from Exception, :with => :render_404
end
ActionController::Base.consider_all_requests_local
Is now deprecated and substituting in:
Rails.application.config.consider_all_requests_local
Did the trick.
Thank you for your help and I hope this helps someone in the future
You may have to swap the version of rvm / ruby and then install.
This may be of use: https://rvm.io/gemsets/basics/

Can RVM hide a gem from the global gemset?

The project I'm about to work on asks for version 1.0.10 of bundler and version 0.8.7 of rake. My global gemset has slightly newer versions of these gems. I.e., the install instructions for the new project look like this:
rvm gemset use rails3
gem uninstall -x bundler
gem install bundler -v 1.0.10
gem uninstall -x rake
gem install rake -v 0.8.7 # Rake needs to be at 0.8.7
What happens is that when I'm in this new rails3 gemset I can't uninstall the existing gems (and personally I don't want to) because they exist in the global gemset.
So, question: can I somehow hide those two gems that exist in the global gemset?
I can list the gems:
$ gem list
*** LOCAL GEMS ***
addressable (2.2.6)
archive-tar-minitar (0.5.2)
awesome_print (1.0.1)
bundler (1.0.21, 1.0.10)
...
rake (0.9.2.2, 0.8.7)
...
Maybe an ancillary question would be: since I have installed the older versions into the the rails3 gemset, will rvm prefer those because the fact they were specifically installed somehow overrides the version in global, or will rvm take the gems with the highest version number?
any command except bundle should be prefixed with bundle exec and this will assure proper version of gem is used (using Gemfile)
you can avoid writing always bundle exec by using my gem rubygems-bundler
for running bundle command - rubygems will select latest available version if you do not specify one ex. bundle _1.0.10_ exec rake db:create

jruby, glassfish gem and bundler

I wonder if anybody has the following issue:
in a jruby environment, I can do:
gem install glassfish
no problem
But if I add
gem 'glassfish'
to my Gemfile and do
bundle install
it always complain glass fish gem cannot be found.
Any solution to this? Thanks
Do you have source "http://rubygems.org" in your Gemfile? I just tested
source "http://rubygems.org"
gem 'glassfish'
and it was fine:
$ cat > Gemfile
source 'http://rubygems.org'
gem "glassfish"
$ jruby -S bundle install
Fetching source index for http://rubygems.org/
Using rack (1.3.5)
Installing glassfish (1.0.3)
Using bundler (1.0.21)
Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed.
Having said that, please keep in mind that glassfish gem is not maintained at this time. For the alternatives, please check this blog post: http://www.engineyard.com/blog/2011/taking-stock-jruby-web-servers/
It turned out to be something wrong with the Gemfile.lock. deleted the file and reinstall fixed the issue.