ruby - 在 Gemfile 中获取 gem 的自定义方法
问题描述
当我们使用自定义 Gem 构建应用程序时,我们必须不断修改 Gemfile 以指向我们的本地代码、我们的共享服务器(使用 geminabox),或者在生产中我们使用解压的 gem 版本(作为我们的gem 服务器受 vpn 保护)。
这意味着我们的 gemfile 中有这样的代码:
# QA and Bamboo
gem 'our_gem', '0.0.1', source: 'https://gems.website.com'
# Development, Test
#gem 'our_gem', path: "../our_gem"
# Production
#gem 'our_gem', path: "../vendor/gems/our_gem-0.1.1"
我们的开发人员必须在他们推送到分支以在 Bamboo 上构建之前,不断地评论和取消评论每一行,等等。
一个建议是用一种自定义方法替换它,例如:
custom_gem 'our_gem', '0.1.1'
代替gem
Gemfile 中的声明。
这将是:
def custom_gem(name, version = '0.0.1')
case Rails.env
when qa?, :bamboo?
gem name, version, source: 'https://gems.website.com'
when development?, test?
gem name, path: "../#{name}"
when production?
gem name, path: "../vendor/gems/#{name}-#{version}"
else
fail "Unknown environment for gem: #{name}"
end
end
问题是......你可以在 Gemfile 中使用这样的自定义方法吗?如果是这样,该代码将存在于应用程序中的什么位置。或者我们是否不得不求助于使用类似的东西: http: //bundler.io/man/gemfile.5.html#INSTALL_IF
解决方案
推荐阅读
- python - 在 Python 中查找相似或重叠的时间组
- php-7 - PHP电子表格读取密码XLSX
- azure-devops - 从错误和 PBI 中整理自定义字段信息
- python - 如何用不同大小的向量向量化操作
- r - 文件错误(文件,“rt”):设置工作目录时“描述”参数无效
- typescript - 如何将类型重新分配给打字稿中的变量
- android - BillingFlowParams.setDeveloperId 的值是多少
- cs50 - CS50x 2019 pset2:Vigenère 无法完全正常工作
- google-apps-script - 如何在一个范围内递归这个公式?
- codeigniter-2 - codeigniter 中不同 rutes 表达式的相同 URL