我的目标是:
创建一个ruby应用程序(graylog2-web-client)的自包含tar.gz,我可以在无互联网连接的盒子上安装并运行,只安装了ruby 1.9.3(rvm,bundler,等等将不可用。)
我已正确安装并启动了应用程序,现在我希望将其打包并将其移至目标框。
更新问题:
我使用了bundle install --development来确保所有gem都在供应商/缓存中。 我把包裹弄干了,把它搬到了新的盒子里。 我已经更新了我的路径,以便我的1.9.3 ruby安装在默认的1.8.x之前。
ruby --version
ruby 1.9.3p429 (2013-05-15 revision 40747) [x86_64-linux]
但是当我运行RAILS_ENV=production script/rails server
我得到require / dependency错误:
/usr/local/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require': cannot load such file -- bundler/setup (LoadError)
from /usr/local/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
from /opt/graylog2-web-interface-0.11.0/config/boot.rb:6:in `<top (required)>'
from /usr/local/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
from /usr/local/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
from script/rails:5:in `<main>'
我的供应商目录:
├── bundle
│ └── ruby
│ └── 1.9.1
├── cache
│ ├── actionmailer-3.2.13.gem
│ ├── actionpack-3.2.13.gem
│ ├── activemodel-3.2.13.gem
...... lots more gems.......
我将它捆绑在1.9.3下为什么我的捆绑包显示1.9.1?
答案 0 :(得分:3)
1.9.3下安装的Gems进入1.9.1目录,因为它们具有相同的兼容版本。这是正常的Ruby Gems行为,请参阅Why are we installing Ruby 1.9.2/1.9.3 gems into a 1.9.1 folder?
您的所有宝石都应该安装到bundle/ruby/1.9.1
目录中。你看到他们了吗?
要在未安装Bundler的服务器上运行,您需要使用bundle install --standalone
生成tarball。
这会在bundle/bundler/setup.rb
创建一个文件,您可以从config/boot.rb
创建一个文件,而不是bundler/setup
。
请参阅:http://myronmars.to/n/dev-blog/2012/03/faster-test-boot-times-with-bundler-standalone