1

我的目标是:
创建一个 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

我得到需求/依赖错误:

/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?

4

1 回答 1

3

安装在 1.9.3 下的 Gem 进入 1.9.1 目录,因为它们具有相同的兼容版本。这是正常的 Ruby Gems 行为,请参阅我们为什么要将 Ruby 1.9.2/1.9.3 gems 安装到 1.9.1 文件夹中?

您的所有 gem 都应该安装到该bundle/ruby/1.9.1目录中。你在里面看到他们了吗?

要在未安装 bundler 的服务器上运行,您需要使用bundle install --standalone.

这将创建一个文件bundle/bundler/setup.rb,您可以在该文件中要求,config/boot.rb而不是要求bundler/setup.

请参阅: http: //myronmars.to/n/dev-blog/2012/03/faster-test-boot-times-with-bundler-standalone

于 2013-06-07T03:20:28.953 回答