我希望仅在舞台不是制作时才需要capistrano/postgresql
。
但是,此Capfile始终需要capistrano/postgresql
,因为fetch(:stage)
为空。
(Capfile中的puts fetch(:stage) || "no stage"
打印"没有阶段")
require 'capistrano/bundler'
require 'capistrano/npm'
require 'capistrano/rails/assets'
require 'capistrano/rails/migrations'
require 'capistrano/puma'
require 'capistrano/puma/nginx'
require 'capistrano/postgresql' unless fetch(:stage) == "production"
require 'capistrano/secrets_yml'
我应该将require 'capistrano/postgresql'
放在config / deploy / staging.rb等中。(我不知道它是否有效)?
或者还有其他简洁的方法吗?
修改
如果我将require 'capistrano/postgresql'
放在config / deploy / staging.rb中,则会出现以下错误。
WARNING: load:defaults has already been invoked and can no longer be modified.
Check that you haven't loaded a Capistrano plugin in deploy.rb by mistake.
Plugins must be loaded in the Capfile to initialize properly.
(Backtrace restricted to imported tasks)
cap aborted!
can't modify frozen #<Class:#<Rake::Task:0x007fd8bcd22868>>
答案 0 :(得分:1)
在Capefile中添加
task :use_postgresql do
require 'capistrano/postgresql'
end
task 'staging' => [:use_postgresql]
那样,capistrano将仅在登台环境时使用posgresql