我正在尝试在 Ubuntu 10.04 上运行 Rails 3 beta 4 和 Ruby 1.9.2rc。它最初有效,但在完成我的第一个 bundle install/package 之后,我现在在所有 Rails 项目中都遇到以下错误。即使是基本的“rails new testproject”后跟一个 rake 也会显示错误消息。
简而言之,我很难过。非常感谢任何有关可能导致此问题的帮助。
我唯一注意到的事情——可能相关也可能不相关——是 ~/.bundle 文件中的目录是 ruby/1.9.1。我的机器上没有安装 1.9.1 - 只有 1.9.2rc。 ruby -v 带回 1.9.2
(in /home/john/Websites/sandbox/testerino)
/home/john/.bundle/ruby/1.9.1/gems/rake-0.8.7/lib/rake.rb:32: warning: already initialized constant RAKEVERSION
/home/john/.bundle/ruby/1.9.1/gems/rake-0.8.7/lib/rake/alt_system.rb:32: warning: already initialized constant WINDOWS
WARNING: Possible conflict with Rake extension: String#ext already exists
WARNING: Possible conflict with Rake extension: String#pathmap already exists
/home/john/.bundle/ruby/1.9.1/gems/rake-0.8.7/lib/rake.rb:404: warning: already initialized constant EMPTY_TASK_ARGS
/home/john/.bundle/ruby/1.9.1/gems/rake-0.8.7/lib/rake.rb:452: warning: already initialized constant EMPTY
/home/john/.bundle/ruby/1.9.1/gems/rake-0.8.7/lib/rake.rb:960: warning: already initialized constant RUBY_EXT
/home/john/.bundle/ruby/1.9.1/gems/rake-0.8.7/lib/rake.rb:964: warning: already initialized constant RUBY
/home/john/.bundle/ruby/1.9.1/gems/rake-0.8.7/lib/rake.rb:1033: warning: already initialized constant LN_SUPPORTED
/home/john/.bundle/ruby/1.9.1/gems/rake-0.8.7/lib/rake.rb:1242: warning: already initialized constant ARRAY_METHODS
/home/john/.bundle/ruby/1.9.1/gems/rake-0.8.7/lib/rake.rb:1245: warning: already initialized constant MUST_DEFINE
/home/john/.bundle/ruby/1.9.1/gems/rake-0.8.7/lib/rake.rb:1249: warning: already initialized constant MUST_NOT_DEFINE
/home/john/.bundle/ruby/1.9.1/gems/rake-0.8.7/lib/rake.rb:1253: warning: already initialized constant SPECIAL_RETURN
/home/john/.bundle/ruby/1.9.1/gems/rake-0.8.7/lib/rake.rb:1259: warning: already initialized constant DELEGATING_METHODS
/home/john/.bundle/ruby/1.9.1/gems/rake-0.8.7/lib/rake.rb:1569: warning: already initialized constant DEFAULT_IGNORE_PATTERNS
/home/john/.bundle/ruby/1.9.1/gems/rake-0.8.7/lib/rake.rb:1575: warning: already initialized constant DEFAULT_IGNORE_PROCS
/home/john/.bundle/ruby/1.9.1/gems/rake-0.8.7/lib/rake.rb:1612: warning: already initialized constant FileList
/home/john/.bundle/ruby/1.9.1/gems/rake-0.8.7/lib/rake.rb:1638: warning: already initialized constant EARLY
/home/john/.bundle/ruby/1.9.1/gems/rake-0.8.7/lib/rake.rb:1968: warning: already initialized constant DEFAULT_RAKEFILES
rake aborted!
stack level too deep
最佳答案
我也遇到过这个问题。它似乎与您提到的特定版本的 rails 或 ruby 无关,它们与我使用的版本不同(Rails 2.3.8、Rake 0.8.7、Ruby 1.9.1p378)。这似乎与 bundler 和 rake 不能很好地协同工作有关。
this lighthouse ticket 底部提到了一个对我有用的解决方案.这是简短的版本:
- 运行“bundle exec bash”;看看 rake 现在是否有效 - 如果有效,
- 通过查阅 env 命令并相应地修改 ~/.bashrc 或 ~/.bash_profile,确保前后的 bash 环境相同。
一旦你这样做了,你就会把 bundler 搞得一团糟。那时你必须清除 RUBYOPT 才能运行 bundle 命令:
RUBYOPT= bundle install --relock
编辑:
再考虑一下,我不确定这一定是解决这个特定问题的最佳方法。在采用这种方法之前,您可能会先尝试 Hiral Desai 的提示和其他一些答案,因为这种方法会改变环境。
关于ruby-on-rails - Rails 3.0 & Ruby 1.9.2rc : Rake commands return 'already initialized constant' & stack level too deep errors. 任何想法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3183495/