测试Rails 4.在Rails 3中,将force_ssl放在我的控制器顶部强制ssl仅用于生产。这被忽略了开发,这是我想要的行为,并且符合force_ssl的文档。
在Rails 4中,我发现force_ssl强制ssl甚至用于开发,这不是我想要的行为(易于解决,但需要更多我不想要的代码)。此外,我无法在任何发行说明中找到所谓的更改位置,因此我认为这可能是一个错误。
我无法通过Google搜索在此网站上找到有关此问题的错误报告。其他人可以确认吗?此外,如果是这样,有人可以将错误报告提交给Rails(我没有设置这样做的帐户,并且如果其他人已经拥有帐户,则不想创建一个帐户)。
简单的解决方法,顺便说一句:
Rails.env.production? ? force_ssl : nil
答案 0 :(得分:6)
这不是错误 - https://github.com/rails/rails/pull/5023
为您的问题提供的解决方案是
force_ssl unless Rails.env.development?
答案 1 :(得分:3)
如果像我一样,您的代码中有很多地方force_ssl
,您可以使用初始化程序保留DRY:
module ActionController::ForceSSL::ClassMethods
alias_method :original_force_ssl, :force_ssl
def force_ssl(options={})
original_force_ssl unless Rails.env.development?
end
end