ruby-on-rails – 宝石要求的条件
发布时间:2020-12-17 02:15:22 所属栏目:百科 来源:网络整理
导读:我想阻止在我的 Windows(rmagick)上更新gem,所以它坚持2.12.0 mswin32.不过,我的同事需要在他的达尔文装置上拥有宝石…… 所以,我试图在Gemfile中做这样的事情: if RUBY_PLATFORM =~ /darwin/i gem 'rmagick','~ 2.12.0'else gem 'rmagick','=2.12.0.mswin3
我想阻止在我的
Windows(rmagick)上更新gem,所以它坚持2.12.0 mswin32.不过,我的同事需要在他的达尔文装置上拥有宝石……
所以,我试图在Gemfile中做这样的事情: if RUBY_PLATFORM =~ /darwin/i gem 'rmagick','~> 2.12.0' else gem 'rmagick','=2.12.0.mswin32' end 但捆绑安装投诉. 正确处理这个问题的正确方法是什么? 解决方法
你不能在gemspec上使用条件,因为gemspec是序列化的
进入YAML,它不包含可执行代码. 我在本地Rails项目的Gemfile中遇到了一个相关的问题(不是 目前,Gemfile包含: group :test do ... # on Mac os X gem 'rb-fsevent' if RUBY_PLATFORM.include?("x86_64-darwin") gem 'ruby_gntp' if RUBY_PLATFORM.include?("x86_64-darwin") # on Linux gem 'rb-inotify' unless RUBY_PLATFORM.include?("x86_64-darwin") gem 'libnotify' unless RUBY_PLATFORM.include?("x86_64-darwin") end 这适用于在Mac和Linux上进行开发(尽管很难看) 但是,我们停止检查Gemfile.lock,因为它每次都会更改 因此,多平台Gemfiles的解决方案也应该解决问题 其他解决方案是为每个目标操作系统构建多个.gemspec文件,并更改每个平台的平台和依赖关系: gemspec = Gem::Specification.new do |s| s.platform = Gem::Platform::RUBY end # here build the normal gem # Now for linux: gemspec.platform = "linux" gemspec.add_dependency ... # build the newer gemspec ... (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |