微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ruby-on-rails – Capistrano:deploy.rb文件重构

我在deploy.rb中有以下代码
namespace :app do
  desc "copies the configuration frile from ~/shared/config/*.yml to ~/config"
  task :copy_config_files,:roles => :app do
    run "cp -fv #{deploy_to}/shared/config/hoptoad.rb #{release_path}/config/initializers"
    run "cp -fv #{deploy_to}/shared/config/app_config.yml #{release_path}/config/app_config.yml"
  end
end

我认为保持deploy.rb文件干净是个好主意,我试图在config下将代码移到capistrano_utilities.rb之上.我正在使用Rails应用程序.我将以下代码添加到deploy.rb中

require File.expand_path(File.dirname(__FILE__) + "/../lib/capistrano_utilities")

现在我收到了以下错误.

undefined method `namespace' for main:Object (NoMethodError)

deploy.rb中self的值是Capistrano :: Configuration.虽然capistrano_utilities中self的值是Main.所以我理解为什么我得到名称空间方法错误.这个问题的解决方法是什么?

解决方法

在config / deploy.rb中,尝试加载而不是require.此外,capistrano已经运行,就像你在RAILS_ROOT一样,因此不需要使用__FILE__:
load "lib/capistrano_utilities"

在capistrano配置文件中,重新定义load以将另一个配置文件加载到当前配置中.在向它传递路径时,它实际上调用load_from_file(由capistrano定义的私有方法),它只从磁盘和instance_eval中读取文件.

原文地址:https://www.jb51.cc/ruby/264691.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐