Ошибка при обновлении до Rails 2.3.11 (ошибка HashWithIndifferentAccess)
Всякий раз, когда я пытаюсь создать или обновить среду, используемую нашим приложением, я получаю следующее:
NoMethodError (undefined method `base_url' for #<HashWithIndifferentAccess:0x107162f08>):
app/controllers/environments_controller.rb:64:in `check_base_url_for_https'
app/controllers/environments_controller.rb:56:in `update'
haml (3.0.22) lib/sass/plugin/rack.rb:41:in `call'
airbrake (3.0.4) lib/airbrake/rack.rb:27:in `call'
airbrake (3.0.4) lib/airbrake/user_informer.rb:12:in `call'
/Users/jasonbodak/.rvm/rubies/ree-1.8.7-2011.03/lib/ruby/1.8/webrick/httpserver.rb:104:in `service'
/Users/jasonbodak/.rvm/rubies/ree-1.8.7-2011.03/lib/ruby/1.8/webrick/httpserver.rb:65:in `run'
/Users/jasonbodak/.rvm/rubies/ree-1.8.7-2011.03/lib/ruby/1.8/webrick/server.rb:173:in `start_thread'
/Users/jasonbodak/.rvm/rubies/ree-1.8.7-2011.03/lib/ruby/1.8/webrick/server.rb:162:in `start'
/Users/jasonbodak/.rvm/rubies/ree-1.8.7-2011.03/lib/ruby/1.8/webrick/server.rb:162:in `start_thread'
/Users/jasonbodak/.rvm/rubies/ree-1.8.7-2011.03/lib/ruby/1.8/webrick/server.rb:95:in `start'
/Users/jasonbodak/.rvm/rubies/ree-1.8.7-2011.03/lib/ruby/1.8/webrick/server.rb:92:in `each'
/Users/jasonbodak/.rvm/rubies/ree-1.8.7-2011.03/lib/ruby/1.8/webrick/server.rb:92:in `start'
/Users/jasonbodak/.rvm/rubies/ree-1.8.7-2011.03/lib/ruby/1.8/webrick/server.rb:23:in `start'
/Users/jasonbodak/.rvm/rubies/ree-1.8.7-2011.03/lib/ruby/1.8/webrick/server.rb:82:in `start'
Как я уже говорил в заголовке, я недавно обновился до Rails 2.3.11. Эта ошибка никогда не возникала раньше. Вот код в моем environment_controller.rb, который выполняется при возникновении ошибки:
def check_base_url_for_https
@environment = params[:environment]
if /^https:\/\//i =~ @environment.base_url
@ajax_flash = "<ul class='notice'><li>The website you are trying to test is a secure site. If you are using self-signed SSL certificates please see our <a href='http://support.janova.us'>Support Site</a> and search for SSL for important tips on how to access your site.</li></ul>"
end
end
Кто-нибудь знает, почему этот код (в частности, строка if /^https:\/\//i =~ @environment.base_url
больше не работает в Rails 2.3.11?
Я хотел бы добавить, что код в моем app/models/environment.rb тоже выглядит нормально:
def base_url
self[:base_url].try(:gsub, /\$/, '')
end
Кто-нибудь видит что-то не так с кодом выше?
1 ответ
Я понял: params[:environment]
был определен как хеш Спасибо, Фрост, за то, что заставил меня это увидеть. Поэтому я изменил строку @environment = params[:environment]
в @environment = Environment.new(params[:environment])
и это сработало.