看來,當我運行bundle package
然後bundle install --local
然後我運行unicorn_rails
,獨角獸仍然訪問系統寶石。我不斷收到:得到獨角獸只能訪問供應商/緩存寶石
您已啓動機架1.5.2,但您的Gemfile需要機架 1.2.8。使用bundle exec可以解決這個問題。
而且它不應該因爲rack 1.2.8在供應商/緩存中。
bundle exec
不會工作,因爲它似乎是一個資源豬,整個bundle package
點是避免這一整個混亂首先。
那麼如何讓獨角獸獲得捆綁環境才能使用供應商/緩存寶石?
後續注意事項:在這種情況下,'rails'不再是一個問題,因爲它現在只運行'script/rails'(如果存在的話),這將是Bundle範圍的。有關二進制路徑的其他一切仍然適用於其他寶石('rspec'是一個值得注意的寶石)。如果您正在運行'unicorn'或'foreman'或'guard'或'spork'或任何其他Ruby gem二進制文件,則需要解決路徑問題。 – 2013-03-23 02:47:51
感謝@Jimmy Stewart!我真的想把我所有的寶石保存在我的倉庫中。我有另一個Rails應用程序運行(Redmine),似乎衝突總是在發生。此外,我不想依賴rubygems.org總是在那裏或總是可用,並在某些情況下github寶石。捆綁安裝--binstubs - 部署或捆綁安裝 - 部署是製作「自包含」應用程序的最佳方式?如果是這樣,那麼如果gem現在在vendor/bundle中,那麼cache目錄的目的是什麼? – Jon 2013-03-23 14:13:22
'bundle install --binstubs --local --deployment'就是你想要的。在你的項目中創建binstubs,防止下載寶石,將寶石安裝到'vendor/bundle'中,並且只使用那些寶石。 'vendor/cache'目錄包含Gem_source code_('.gem'文件)。'vendor/bundle'目錄中充滿了解壓縮,編譯好的(如果需要的話),隨時可用的gem。這就是'require'最終會在您的應用運行時加載它們的地方。 – 2013-03-23 17:43:16