为什么我会"undefined local variable or method `rails_env'"?



我在做时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

最新更新