【问题标题】:Why I'm getting "undefined local variable or method `rails_env'"?为什么我得到“未定义的局部变量或方法‘rails_env’”?
【发布时间】:2015-05-16 11:50:01
【问题描述】:

我收到undefined local variable or method 'rails_env'when

执行“cd #{current_path} && RAILS_ENV=#{​​rails_env} bundle exec rake sunspot:solr:stop”

我不是 Capistrano 或 Rails 专家。

在 deploy.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"

在 deploy/staging.rb 我有

 set :rails_env, :staging

错过了什么?

【问题讨论】:

    标签: ruby-on-rails solr capistrano capistrano3


    【解决方案1】:

    您应该使用fetch 方法。所以,不要使用rails_env

    fetch(:rails_env)
    

    Here(或here)是更多细节。

    【讨论】:

      【解决方案2】:

      尝试将rails_env 替换为Rails.env

      【讨论】:

      • 我测试了很多东西......但我相信这就是原始代码所具有的和不起作用的。不过我会再试一次
      • 啊,我的错。我自己不是 capistrano 专家。 :) 看起来 maxd 可能有它
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-26
      • 1970-01-01
      相关资源
      最近更新 更多