我正在和一個開發團隊合作,我們都使用了我們倉庫中的相同Gemfile。因爲我在Mac上工作,而其他人使用的是Ubuntu,所以我們的存儲庫中還有一個Gemfile.local.example文件,它爲每個操作系統都提供了適當的通知寶石,所有這些文件都被註釋掉了。如何爲我的應用程序使用多個Gemfiles?
我沒有評論我的操作系統的寶石,並保存爲一個新文件,而不是版本控制Gemfile.local。現在我想要「捆綁安裝」從這兩個文件安裝寶石。
我找不到這樣做的任何好文檔。
我正在和一個開發團隊合作,我們都使用了我們倉庫中的相同Gemfile。因爲我在Mac上工作,而其他人使用的是Ubuntu,所以我們的存儲庫中還有一個Gemfile.local.example文件,它爲每個操作系統都提供了適當的通知寶石,所有這些文件都被註釋掉了。如何爲我的應用程序使用多個Gemfiles?
我沒有評論我的操作系統的寶石,並保存爲一個新文件,而不是版本控制Gemfile.local。現在我想要「捆綁安裝」從這兩個文件安裝寶石。
我找不到這樣做的任何好文檔。
我同意使用兩個Gemfiles是不好的做法,並已發現包括在我的Gemfile的platform
標誌沿RUBY_PLATFORM
恆定的辦法。這可能不是最優雅的解決方案,但它確實對我有用。
這裏是我的好奇的讀者的一塊代碼:
group :development, :test do
# Mac OSX notifications
gem 'growl_notify' if RUBY_PLATFORM.downcase.include?("darwin")
gem 'growl' if RUBY_PLATFORM.downcase.include?("darwin")
# Gnome notifications => aka for Linux
gem 'libnotify' if RUBY_PLATFORM.downcase.include?("linux")
# Guard-spork doesn't work with windows but it's
# awesome for other Operating Systems.
gem 'guard-spork' if RUBY_PLATFORM.downcase.include?('darwin') || RUBY_PLATFORM.downcase.include?('linux')
# Windows Rubies (RubyInstaller)
platforms :mswin, :mingw do
# Windows notifications
gem 'rb-notifu'
end
end
爲什麼不只有一個Gemfile
並使用諸如groups之類的東西或使用:platform標誌僅在OS X和其他Ubuntu上安裝一些gem?
似乎很笨拙,有兩個Gemfiles。你可以提供Gemfile使用bundle config
(man page)如果你真的想要這樣做,我猜。
這是真棒的可能的複製,我是不知道平臺選項。我一直在使用RUBY_PLATFORM常量在Gemfile中使用條件。非常乾淨! – 2012-07-19 16:55:42
使用':platform'標誌似乎是最優雅的解決方案,但'platform:ruby'引用OSX和Ubuntu,而'platform:mswin,:mingw'引用Windows。我需要在OSX和Ubuntu之間指定。 [本頁](http://yopefonic.wordpress.com/2011/06/23/multi-platform-ruby-development-with-bundler/)建議使用RUBY_PLATFORM常量。有另一種方法嗎? – dudeitsdevin90 2012-07-19 18:40:52
你應該都使用相同的Gemfile
和主Gemfile.lock
也應該循環。至少這是理想的。
請記住,您可以使用Ruby來區分Bundle.setup
加載哪些部分,並且您可以使用組來定義僅與特定平臺相關的內容。
Gemfile.lock
應代表部署應用程序的具體要求。它應該在版本控制系統中,所以應用程序將會啓動的版本不會混淆。如果此處存在平臺問題,則應注意您使用的內容,並根據需要將相關性鎖定到:development
組。
我不確定跨平臺兼容性(它看起來像只支持OS X),但RVM gemsets值得研究。我在工作時在我的Mac上使用它,它工作得很漂亮。
RVM允許我通過運行rvm use命令來創建和使用多個gemset配置。這些寶石已安裝到我目前使用的寶石中,因此您不必擔心全局寶石中的衝突。
http://stackoverflow.com/questions/7962743/bundler-load-multiple-gemfiles – Conner 2012-07-19 16:50:09