我正在和一个开发团队合作,我们都使用了我们仓库中的相同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