1

私の目的は次のとおりです。インターネット接続
がなく、Ruby 1.9.3 のみ がインストールされているボックスにインストールして実行できる Ruby アプリ (graylog2-web-client) の自己完結型 tar.gz を作成します(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ディレクトリにインストールする必要があります。そこに彼らが見えますか?

バンドラーがインストールされていないサーバーで実行するには、 を使用して tarball を生成する必要がありますbundle install --standalone

これにより、required の代わりに、bundle/bundler/setup.rbrequire から要求できる にファイルが作成されます。config/boot.rbbundler/setup

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

于 2013-06-07T03:20:28.953 に答える