我在做时undefined local variable or method 'rails_env'
执行 "CD #{current_path} && RAILS_ENV=#{rails_env} bundle exec rake sunspot:solr:stop"
我不是大Capistrano或rails专家。
在部署.rb上,我有
namespace :solr do
desc "start solr"
task :start do
on roles(:app) do
execute "cd #{current_path} && RAILS_ENV=#{rails_env} bundle exec rake sunspot:solr:start"
end
end
desc "stop solr"
task :stop do
on roles(:app) do
execute "cd #{current_path} && RAILS_ENV=#{rails_env} bundle exec rake sunspot:solr:stop"
end
end
desc "reindex the whole database"
task :reindex do
on roles(:app) do
invoke 'solr:stop'
execute "rm -rf #{shared_path}/solr/data/*"
invoke 'solr:start'
execute "cd #{current_path} && RAILS_ENV=#{rails_env} d"
end
end
desc "Symlink in-progress deployment to a shared Solr index"
task :symlink do
on roles(:app) do
execute "ln -s #{shared_path}/solr/data/ #{release_path}/solr/data"
execute "ln -s #{shared_path}/solr/pids/ #{release_path}/solr/pids"
invoke 'solr:reindex'
end
end
end
after "deploy:finishing", "solr:symlink"
在部署/暂存.rb 上,我有
set :rails_env, :staging
错过了什么?
你应该使用fetch
方法。因此,与其rails_env
使用:
fetch(:rails_env)
这里(或这里)是更多详细信息。
尝试将rails_env
替换为Rails.env