我的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文件干净是个好主意,我尝试将上面的代码移动到配置下的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。所以我明白为什么我会收到命名空间方法错误。这个问题的解决办法是什么?
In your config/deploy.rb
, try load
代替require
。另外,capistrano 已经运行了,就像您在RAILS_ROOT
,所以不需要使用__FILE__
:
load "lib/capistrano_utilities"
在 capistrano 配置文件中,load
被重新定义以将另一个配置文件加载到当前配置中。当向它传递路径时,它实际上调用load_from_file
(由 capistrano 定义的私有方法),仅从磁盘读取文件并instance_eval
's it.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)