6

ハックせずにjrubyをRails 4で動作させることはできませんでした:

railties/lib/rails/engine.rb では、Railties を const_get で初期化する必要がありました。

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 `ロード'

同じ理由で Rails 自体が起動しません。これは正しい修正ですか、それとも根本的な問題を隠しましたか?

4

2 に答える 2

3

問題を実際に解決するわけではありませんが、追加しました

Rails::Engine.class_eval do
  def railties
    @railties ||= self.class.const_get(:Railties).new
  end
end

Bundler.requireapplication.rbファイルを変更する必要がないようにします。

于 2013-01-25T21:55:50.487 に答える
0

This appears to have been fixed with this commit to Rails master (small change to engine): https://github.com/rails/rails/commit/45aabe61520cbb4bd74f6de7dc1023d2ca071e40

I just added:

gem 'rails', :git => 'git://github.com/rails/rails.git'  

or just

gem 'rails', github: 'rails/rails'

to my Gemfile to pull down the latest version of Rails, and that did the trick. Was able to delete Alex's (nice - thankyou!) hack and it all works as it should.

于 2013-03-22T08:50:14.513 に答える