【问题标题】:Rake can't be found找不到耙子
【发布时间】:2010-07-14 08:02:29
【问题描述】:

嘿,我玩过bundler 和一些宝石,现在我不能再使用rake

如果我做一个简单的 db:migrate 我得到这个错误:

mac:app antpaw$ rake db:migrate
/usr/local/lib/ruby/site_ruby/1.9.1/rubygems.rb:335:in `bin_path': can't find executable rake for rake-0.8.7 (Gem::Exception)
 from <internal:gem_prelude>:282:in `method_missing'
 from /usr/local/bin/rake:19:in `<main>'

但如果我这样做gem list,则会列出 rake。我正在使用 rails 3.0.0beta4、bundler 1.0.0.beta.5 和 ruby​​ 1.9.2dev。

编辑发布了我的export

mac:trickpipe antpaw$ export
declare -x Apple_PubSub_Socket_Render="/tmp/launch-2GMaKT/Render"
declare -x COMMAND_MODE="unix2003"
declare -x DISPLAY="/tmp/launch-5RguhF/:0"
declare -x HOME="/Users/antpaw"
declare -x LC_CTYPE="UTF-8"
declare -x LOGNAME="antpaw"
declare -x OLDPWD="/Users/antpaw"
declare -x PATH="/usr/local/bin:/usr/local/sbin:/usr/local/mysql/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/git/bin:/usr/X11/bin"
declare -x PWD="/Volumes/Work HD/localhost/trickpipe"
declare -x SHELL="/bin/bash"
declare -x SHLVL="1"
declare -x SSH_AUTH_SOCK="/tmp/launch-N13Ivn/Listeners"
declare -x TERM="xterm-color"
declare -x TERM_PROGRAM="Apple_Terminal"
declare -x TERM_PROGRAM_VERSION="272"
declare -x TMPDIR="/var/folders/-K/-Kf7svFPHrKmLqMXKAGLuU+++TI/-Tmp-/"
declare -x USER="antpaw"
declare -x __CF_USER_TEXT_ENCODING="0x1F5:0:0"
mac:trickpipe antpaw$ which ruby
/usr/local/bin/ruby
mac:trickpipe antpaw$ ruby -v
ruby 1.9.2dev (2010-07-02 revision 28524) [x86_64-darwin10.2.0]

好的,我试了一下,看看错误信息是如何变化的:

mac:trickpipe antpaw$ export GEM_HOME="/usr/local/lib/ruby/gems"
mac:trickpipe antpaw$ rake about
/usr/local/lib/ruby/site_ruby/1.9.1/rubygems.rb:335:in `bin_path': can't find executable rake for rake-0.8.7 (Gem::Exception)
    from <internal:gem_prelude>:282:in `method_missing'
    from /usr/local/bin/rake:19:in `<main>'
mac:trickpipe antpaw$ export GEM_PATH="/usr/local/lib/ruby/gems"
mac:trickpipe antpaw$ rake about
/usr/local/lib/ruby/site_ruby/1.9.1/rubygems.rb:779:in `report_activate_error': Could not find RubyGem rake (>= 0) (Gem::LoadError)
    from /usr/local/lib/ruby/site_ruby/1.9.1/rubygems.rb:214:in `activate'
    from /usr/local/lib/ruby/site_ruby/1.9.1/rubygems.rb:1082:in `gem'
    from <internal:gem_prelude>:213:in `push_gem_version_on_load_path'
    from <internal:gem_prelude>:16:in `gem'
    from /usr/local/bin/rake:18:in `<main>'
mac:trickpipe antpaw$ 

现在使用 rvm:

mac:trickpipe antpaw$ rake about
(in /Volumes/Work HD/localhost/rails_app)
/Users/antpaw/.rvm/rubies/ruby-1.9.2-rc2/lib/ruby/1.9.1/rake.rb:30: warning: already initialized constant RAKEVERSION
WARNING: Possible conflict with Rake extension: String#ext already exists
WARNING: Possible conflict with Rake extension: String#pathmap already exists
/Users/antpaw/.rvm/rubies/ruby-1.9.2-rc2/lib/ruby/1.9.1/rake.rb:402: warning: already initialized constant EMPTY_TASK_ARGS
/Users/antpaw/.rvm/rubies/ruby-1.9.2-rc2/lib/ruby/1.9.1/rake.rb:450: warning: already initialized constant EMPTY
/Users/antpaw/.rvm/rubies/ruby-1.9.2-rc2/lib/ruby/1.9.1/rake.rb:958: warning: already initialized constant RUBY_EXT
/Users/antpaw/.rvm/rubies/ruby-1.9.2-rc2/lib/ruby/1.9.1/rake.rb:962: warning: already initialized constant RUBY
/Users/antpaw/.rvm/rubies/ruby-1.9.2-rc2/lib/ruby/1.9.1/rake.rb:1031: warning: already initialized constant LN_SUPPORTED
/Users/antpaw/.rvm/rubies/ruby-1.9.2-rc2/lib/ruby/1.9.1/rake.rb:1240: warning: already initialized constant ARRAY_METHODS
/Users/antpaw/.rvm/rubies/ruby-1.9.2-rc2/lib/ruby/1.9.1/rake.rb:1243: warning: already initialized constant MUST_DEFINE
/Users/antpaw/.rvm/rubies/ruby-1.9.2-rc2/lib/ruby/1.9.1/rake.rb:1247: warning: already initialized constant MUST_NOT_DEFINE
/Users/antpaw/.rvm/rubies/ruby-1.9.2-rc2/lib/ruby/1.9.1/rake.rb:1251: warning: already initialized constant SPECIAL_RETURN
/Users/antpaw/.rvm/rubies/ruby-1.9.2-rc2/lib/ruby/1.9.1/rake.rb:1257: warning: already initialized constant DELEGATING_METHODS
/Users/antpaw/.rvm/rubies/ruby-1.9.2-rc2/lib/ruby/1.9.1/rake.rb:1561: warning: already initialized constant DEFAULT_IGNORE_PATTERNS
/Users/antpaw/.rvm/rubies/ruby-1.9.2-rc2/lib/ruby/1.9.1/rake.rb:1567: warning: already initialized constant DEFAULT_IGNORE_PROCS
/Users/antpaw/.rvm/rubies/ruby-1.9.2-rc2/lib/ruby/1.9.1/rake.rb:1604: warning: already initialized constant FileList
/Users/antpaw/.rvm/rubies/ruby-1.9.2-rc2/lib/ruby/1.9.1/rake.rb:1630: warning: already initialized constant EARLY
/Users/antpaw/.rvm/rubies/ruby-1.9.2-rc2/lib/ruby/1.9.1/rake.rb:1960: warning: already initialized constant DEFAULT_RAKEFILES
DEPRECATION WARNING: Calling a method in Rails::Application is deprecated, please call it directly in your application constant Trickpipe::Application. (called from method_missing at /Users/antpaw/.rvm/gems/ruby-1.9.2-rc2/bundler/gems/rails-edb5401/railties/lib/rails/application.rb:77)
rake aborted!
stack level too deep

(See full trace by running task with --trace)

【问题讨论】:

  • 我在 Rails 3 和 Ruby 1.9 中看到过类似的情况。似乎正在发生的事情是 /usr/local/bin/rake 正在调用一些代码,最终试图链接回不同的环境。
  • 尝试删除并重新安装?
  • @ehsanul:当然,但没有帮助
  • 几乎。我认为我们取得了一些进展,我们现在在线 ruby​​gems.rb:779 而不是 ruby​​gems.rb:335 了。
  • 我错了:不,我已经销毁了我所有的 gem 路径:D gem list 现在是空的

标签: ruby rubygems rake


【解决方案1】:

仅供参考,如果您使用 macports 安装 ruby​​ 1.9.2 我遇到了这样的问题:

/opt/local/lib/ruby1.9/1.9.1/rubygems.rb:340:in `bin_path': can't find executable rake for rake-0.8.7 (Gem::Exception)
from /opt/local/bin/rake:19:in `<main>'

修复方法是进入 /opt/local/lib/ruby1.9/gems/1.9.1/specifications 并删除“rake.gemspec”

就是这样......花了很长时间才找到它,但是它工作得很好

【讨论】:

  • 顺便说一句,我在 Windows 7 上也遇到了同样的问题。在这种情况下,“remove rake.gemspec”解决方案也适用于我。
  • 在 Win7 上也为我工作。这是 Rake 中的错误吗?如果是这样,有没有人看到它的票?小问题,但它是一个 ***** 来解决。谢谢大家。
  • 这对我也有用,通过 MacOS 10.6.5 上的 Homebrew。当然,做:rm /usr/local/Cellar/ruby/1.9.2-p136/lib/ruby/gems/1.9.1/specifications/rake.gemspec 代替。
  • @mike 这里也一样。看起来这是 RubyGems 应用程序的设计缺陷,但我们 1.9.2 用户无法升级到 1.4,因为新版本会吃掉我们未出生的孩子,偷我们的信用卡,踢我们的狗……我可能夸大了...但只有一点点。
  • 奇怪的是,将文件重命名为 'rake.gemspec' 不起作用,但将其重命名为 'rake.gemspec' did
【解决方案2】:

我很确定您没有正确设置路径环境。 /usr/local/lib/ruby/site_ruby/1.9.1/ 是 Mac OS X 附带的 RUby 解释器的默认包文件夹——废话。当您说您(假设)使用 Ruby 1.9.2dev 时,这条路径是错误的。请将export 放入shell 并发布结果。此外,请发布 Ruby 1.9.2dev 的安装/路径和捆绑文件夹。

编辑 1:

好的,您的问题的快速修复:export GEM_HOME="/path/where/your/gems/reside" 和可选的export GEM_PATH="/path/where/your/gems/reside" 和可选的export PATH="/path/where/your/gems/reside:$PATH"。只能按这个顺序!尝试一个,当它仍然不起作用时继续下一个导出。

请注意,这应该可以解决您的问题,但要使 Bundler 环境与 rails f.e. 一起工作。您必须更改 Rails 应用程序的配置以明确使用您的自定义 BUndler gem 环境。前段时间我读到Rails3 将为此提供选项;在这种情况下(我不知道 Rails3)检查你的那些命令。

P.s:将 Bundler 放在一边,改用 RVM。它更强大、更成熟,并提供更大的灵活性(尤其是在处理多个解释器和 gemset 时)。

【讨论】:

  • 你看不到它,因为它是系统范围的默认值
【解决方案3】:

我在使用 RVM ("warning: already initialized constant RAKEVERSION") 等时遇到了同样的问题。

我正在使用 Gemset(“rails”)进行开发,但我注意到我的 BUNDLE_PATH 不是指向这个 gemset (.rvm/gems/ruby-1.9.2-p0@rails);,而是指向全局的 (.rvm/gems/ruby-1.9.2-p0).

我修复了 BUNDLE_PATH 以使用 rails Gemset 并且 rake 现在可以正常工作。希望对您有所帮助。

【讨论】:

    【解决方案4】:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-07
      • 2014-08-02
      • 1970-01-01
      • 2019-03-17
      • 1970-01-01
      • 2012-08-22
      • 1970-01-01
      • 2013-09-28
      相关资源
      最近更新 更多