I've been experimenting with creating an executable jar that runs a Ruby script that depends on Rails models. I created an empty Rails app to play with at http://github.com/slumos/warbler-testapp. The challenge is to execute bin/testapp, which loads the Rails environment. To start, I had to do some hacking to override Rails detection in config/warble.rb: # Override the Rails detection Warbler.framework_detection = false Warbler::Traits.module_eval do def auto_detect_traits [Warbler::Traits::Bundler, Warbler::Traits::Jar, Warbler::Traits::NoGemspec] end end This seemed almost to work, but then after successfully loading a dozen gems, it blows up with a LoadError for bundle/index. I successfully eliminated the dependency on Bundler by setting ENV['BUNDLE_GEMFILE'] = '' in bin/testapp. But now I have no idea what to do with this: Errno::ENOENT: No such file or directory - /private/tmp/jar/jar:file:/private/tmp/jar/testapp.jar!/gems/activesupport-3.2.12/lib/active_support/locale/en.yml mtime at org/jruby/RubyFile.java:890 updated_at at jar:file:/private/tmp/jar/testapp.jar!/gems/activesupport-3.2.12/lib/active_support/file_update_checker.rb:100 map at org/jruby/RubyArray.java:2361 updated_at at jar:file:/private/tmp/jar/testapp.jar!/gems/activesupport-3.2.12/lib/active_support/file_update_checker.rb:100 execute at jar:file:/private/tmp/jar/testapp.jar!/gems/activesupport-3.2.12/lib/active_support/file_update_checker.rb:77 initialize_i18n at jar:file:/private/tmp/jar/testapp.jar!/gems/activesupport-3.2.12/lib/active_support/i18n_railtie.rb:67 Railtie at jar:file:/private/tmp/jar/testapp.jar!/gems/activesupport-3.2.12/lib/active_support/i18n_railtie.rb:34 call at org/jruby/RubyProc.java:249 execute_hook at jar:file:/private/tmp/jar/testapp.jar!/gems/activesupport-3.2.12/lib/active_support/lazy_load_hooks.rb:34 run_load_hooks at jar:file:/private/tmp/jar/testapp.jar!/gems/activesupport-3.2.12/lib/active_support/lazy_load_hooks.rb:43 each at org/jruby/RubyArray.java:1613 run_load_hooks at jar:file:/private/tmp/jar/testapp.jar!/gems/activesupport-3.2.12/lib/active_support/lazy_load_hooks.rb:42 Finisher at jar:file:/private/tmp/jar/testapp.jar!/gems/railties-3.2.12/lib/rails/application/finisher.rb:59 instance_exec at org/jruby/RubyBasicObject.java:1720 run at jar:file:/private/tmp/jar/testapp.jar!/gems/railties-3.2.12/lib/rails/initializable.rb:30 run_initializers at jar:file:/private/tmp/jar/testapp.jar!/gems/railties-3.2.12/lib/rails/initializable.rb:55 each at org/jruby/RubyArray.java:1613 run_initializers at jar:file:/private/tmp/jar/testapp.jar!/gems/railties-3.2.12/lib/rails/initializable.rb:54 initialize! at jar:file:/private/tmp/jar/testapp.jar!/gems/railties-3.2.12/lib/rails/application.rb:136 __send__ at org/jruby/RubyBasicObject.java:1659 send at org/jruby/RubyKernel.java:2086 method_missing at jar:file:/private/tmp/jar/testapp.jar!/gems/railties-3.2.12/lib/rails/railtie/configurable.rb:30 (root) at file:/private/tmp/jar/testapp.jar!/testapp/config/environment.rb:5 require at org/jruby/RubyKernel.java:1027 (root) at jar:file:/var/folders/fj/5jjtp7hd7673q5_h4cl02r580009tv/T/jruby7518566963929780211extract/jruby-stdlib-1.7.2.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/custom_require.rb:1 require at jar:file:/var/folders/fj/5jjtp7hd7673q5_h4cl02r580009tv/T/jruby7518566963929780211extract/jruby-stdlib-1.7.2.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/custom_require.rb:36 load at org/jruby/RubyKernel.java:1046 (root) at file:/private/tmp/jar/testapp.jar!/testapp/bin/testapp:7 require at org/jruby/RubyKernel.java:1027 (root) at file:/private/tmp/jar/testapp.jar!/META-INF/main.rb:1 (root) at file:/private/tmp/jar/testapp.jar!/META-INF/main.rb:1 My Java-fu is not super-strong. Is this business of gems attempting to open files in relative to their own location simply incompatible with running from a jar? Or is it an incompatibility between warbler and certain rubygems versions like my googling suggests? I started with and want to use jruby-1.7.2, but also have tried multiple versions back to jruby-1.6.3 and rubygems-1.5.1 with identical results. Can anyone suggest a way forward? Thanks in advance. Steven
on 2013-02-13 00:46
Please log in before posting. Registration is free and takes only a minute.
Existing account
(Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
Log in with Google account | Log in with Yahoo account
No account? Register here.