5

测试 Rails 4。在 Rails 3 中,将 force_ssl 放在我的控制器顶部强制 ssl 仅用于生产。这在开发中被忽略了,这是我想要的行为,并且符合 force_ssl 的文档。

在 Rails 4 中,我发现 force_ssl 甚至强制 ssl 用于开发,这不是我想要的行为(易于解决,但需要更多我不想要的代码)。此外,我在任何发行说明中都找不到所谓的更改位置,所以我相信这可能是一个错误。

我无法通过谷歌搜索找到关于此的错误报告,也无法在此网站上找到。其他人可以确认吗?此外,如果是这样,是否有人可以向 Rails 提交错误报告(我没有设置这样做的帐户,如果其他人已经有一个,也不想创建一个)。

简单的解决方法,顺便说一句:

Rails.env.production? ? force_ssl : nil
4

2 回答 2

6

这不是错误 - https://github.com/rails/rails/pull/5023

那里为您的问题提供的解决方案是

force_ssl unless Rails.env.development?
于 2013-06-20T21:09:55.267 回答
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
于 2014-04-18T14:32:50.757 回答