【发布时间】:2013-01-25 18:09:39
【问题描述】:
如果没有 hack,我无法让 jruby 使用 Rails 4:
在 railties/lib/rails/engine.rb 中,我必须用 const_get 初始化 Railties,否则
def railties
@railties ||= self.class.const_get(:Railties).new
# @railties ||= self.class::Railties.new
end
否则我会得到这个:
./bin/rake
耙中止!
未初始化的常量 Myapp::Application::Railties
org/jruby/RubyModule.java:2677:in const_missing'
/Volumes/Opt/rails/rails-edge/railties/lib/rails/engine.rb:469:inrailties'
/Volumes/Opt/rails/rails-edge/railties/lib/rails/application.rb:241:in run_tasks_blocks'
/Volumes/Opt/rails/rails-edge/railties/lib/rails/engine.rb:444:inload_tasks'
org/jruby/RubyBasicObject.java:1659:in __send__'
org/jruby/RubyKernel.java:2086:insend'
/Volumes/Opt/rails/rails-edge/railties/lib/rails/railtie/configurable.rb:30:in method_missing'
/Volumes/Opt/projects/myapp/Rakefile:6:in(root)'
org/jruby/RubyKernel.java:1046:in `load'
Rails 本身不会因为同样的原因启动。这是正确的解决方法还是我掩盖了一些潜在的问题?
【问题讨论】:
-
我也在 jruby 1.7.3 中看到了这个
-
我已经安装了 jruby 1.7.4.dev 并且同样的事情 - Rails 不会启动 NameError: uninitialized constant MyAppName::Application::Railties
-
已解决(见下方答案)
标签: jruby jrubyonrails ruby-on-rails-4