本地耙任务需要开发团队参与生产

时间:2018-06-20 18:02:23

标签: ruby-on-rails rubygems rake

我有一些仅在本地执行的rake任务。但是,由于我在rake任务中引用了一些gem类,因此这似乎要求在生产服务器上安装和加载gem。除其他外,这会增加服务器上的部署时间和内存使用量。

这可能与我的设置有关,也可能与我无关:

config.autoload_paths += Dir["#{config.root}/lib/**/"]

我有许多lib文件和子目录。

我想我的选择是

  • 将我所有的lib文件移动到其他位置,并将该路径添加到autoload_paths
  • 尝试从autoload_paths中排除任务目录
  • 在rake任务本身中做一些花哨的事情(如果可能的话),以避免需要存在宝石。
  • 将rake任务配置为住在其他地方(似乎是个坏主意)

这似乎是一个很常见的问题,可能有解决或避免它的常见方法。我想念什么?

2 个答案:

答案 0 :(得分:0)

做这样的事情可能会起作用

require "prod_gem_name"

unless Rails.env.production?
  require 'dev_gem_name'

  desc "Task that run something with a dev gem"
  # code that uses the gem on dev group
end

或另一种解决方案可能是将那些.rake文件添加到gitignore中。也许并非在所有情况下都有效,但这是另一种选择。

答案 1 :(得分:0)

也许不是最令人兴奋的答案,但我只是将s.replaceAll("<[^>]*>", ""); 移到了耙require 'dev_gem'内,完成了该任务。

task

这样,仅在调用rake任务时才加载库,而不是在定义rake任务时加载库。