覆盖Radiant CMS的路由,从扩展到设置协议为https

时间:2015-12-15 08:35:06

标签: ruby-on-rails ruby ruby-on-rails-3.2 radiant

我使用的是名为Radiant(版本0.9.1),Rails 2.3.18和Ruby 1.8.7的CMS。我必须使用这个宝石中的路线使用'https'。我需要这样做,我不会编辑宝石源文件本身,而是覆盖扩展中的宝石路线。我该怎么做?

1 个答案:

答案 0 :(得分:0)

服务器的配置实际上取决于服务器堆栈的样子

要将rails应用程序配置为使用SSL,您需要强制使用ssl

在config / environments / production.rb中:

config.force_ssl = true

要在本地测试ssl,我建议尝试使用瘦作为网络服务器(也可以在development.rb中输入config.force_ssl进行测试)

添加:

gem 'thin' 

到你的gemfile并启动瘦ssl服务器:

$ thin start --ssl -p 3000

EDIT Rails 2:

对于Rails 2,这应该有效:

LIB / force_ssl.rb

class ForceSSL
  def initialize(app)
    @app = app
  end

  def call(env)
    if env['HTTPS'] == 'on' || env['HTTP_X_FORWARDED_PROTO'] == 'https'
      @app.call(env)
    else
      req = Rack::Request.new(env)
      [301, { "Location" => req.url.gsub(/^http:/, "https:") }, []]
    end
  end
end

配置/ production.rb

config.middleware.use "ForceSSL"

配置/ application.rb中

require File.expand_path('../../lib/force_ssl.rb', __FILE__)

来源:Force SSL using ssl_requirement in Rails 2 app