diff --git a/Gemfile b/Gemfile index 14fd00872b7..d8f21eadaa3 100644 --- a/Gemfile +++ b/Gemfile @@ -4,17 +4,18 @@ source "http://gems.github.com" gem "rails", "2.3.5" gem "rack", "1.0.1" -gem "aws-s3", "0.6.2", :require_as => "aws/s3" -gem "clearance", "0.8.2" -gem "ddollar-pacecar", "1.1.6", :require_as => "pacecar" -gem "gchartrb", "0.8", :require_as => "google_chart" -gem "gravtastic", "2.1.3" -gem "hoptoad_notifier", "2.1.3" -gem "rack-maintenance", "0.3.0", :require_as => "rack/maintenance" -gem "rest-client", "1.0.3", :require_as => "rest_client" -gem "sinatra", "0.9.4" -gem "will_paginate", "2.3.11" -gem "xml-simple", "1.0.12" +gem "aws-s3", "0.6.2", :require_as => "aws/s3" +gem "clearance", "0.8.2" +gem "ddollar-pacecar", "1.1.6", :require_as => "pacecar" +gem "gchartrb", "0.8", :require_as => "google_chart" +gem "gravtastic", "2.1.3" +gem "hoptoad_notifier", "2.1.3" +gem "rack-force_domain", "0.1.1", :require_as => "rack/force_domain" +gem "rack-maintenance", "0.3.0", :require_as => "rack/maintenance" +gem "rest-client", "1.0.3", :require_as => "rest_client" +gem "sinatra", "0.9.4" +gem "will_paginate", "2.3.11" +gem "xml-simple", "1.0.12" only :test do gem "cucumber", "0.3.101" diff --git a/app/metal/hostess.rb b/app/metal/hostess.rb index a61f00ccd45..736d896ef9f 100644 --- a/app/metal/hostess.rb +++ b/app/metal/hostess.rb @@ -69,7 +69,7 @@ def serve_via_cf get "/gems/*.gem" do full_name = params[:splat].to_s.chomp(".gem") - if ENV['MAINTENANCE_MODE'] + if Rails.env.maintenance? serve_via_cf else if version = Version.find_by_full_name(full_name) diff --git a/app/models/download.rb b/app/models/download.rb index c7589614892..553a947c0ed 100644 --- a/app/models/download.rb +++ b/app/models/download.rb @@ -1,5 +1,5 @@ class Download < ActiveRecord::Base - include Pacecar + include Pacecar unless Rails.env.maintenance? belongs_to :version, :counter_cache => true def after_create diff --git a/app/models/rubygem.rb b/app/models/rubygem.rb index db1f0622f67..1ac49e0b03e 100644 --- a/app/models/rubygem.rb +++ b/app/models/rubygem.rb @@ -1,5 +1,5 @@ class Rubygem < ActiveRecord::Base - include Pacecar + include Pacecar unless Rails.env.maintenance? has_many :owners, :through => :ownerships, :source => :user has_many :ownerships, :dependent => :destroy diff --git a/app/models/version.rb b/app/models/version.rb index cd2b4be42bc..df0aa9e386e 100644 --- a/app/models/version.rb +++ b/app/models/version.rb @@ -1,5 +1,5 @@ class Version < ActiveRecord::Base - include Pacecar + include Pacecar unless Rails.env.maintenance? default_scope :order => 'position' diff --git a/config.ru b/config.ru deleted file mode 100644 index 0c8f99828a7..00000000000 --- a/config.ru +++ /dev/null @@ -1,14 +0,0 @@ -if File.exists?("tmp/maintenance_mode") - require File.join('vendor', 'bundler_gems', 'environment') - require File.join('config', 'environment') - - use Rack::Static, :urls => ["/index.html", "/favicon.ico", "/images", "/stylesheets"], :root => "public/maintenance" - use Hostess - use Rack::Maintenance, :file => File.join('public', 'maintenance', 'index.html') - run Sinatra::Application -else - require 'thin' - - run Rack::Adapter::Rails.new(:environment => ENV['RAILS_ENV']) -end - diff --git a/config/environments/maintenance.rb b/config/environments/maintenance.rb new file mode 100644 index 00000000000..78a885946d6 --- /dev/null +++ b/config/environments/maintenance.rb @@ -0,0 +1,14 @@ +require Rails.root.join("config", "secret") if Rails.root.join("config", "secret.rb").file? + +HOST = "gemcutter.org" + +config.frameworks -= [:active_record] + +config.middleware.use ::Rack::Static, + :urls => ["/index.html", + "/favicon.ico", + "/images", + "/stylesheets"], + :root => "public/maintenance" +config.middleware.use ::Rack::Maintenance, + :file => File.join('public', 'maintenance', 'index.html') diff --git a/config/environments/production.rb b/config/environments/production.rb index d29c5a41536..bb538e2bba6 100644 --- a/config/environments/production.rb +++ b/config/environments/production.rb @@ -7,3 +7,4 @@ require Rails.root.join("config", "secret") if Rails.root.join("config", "secret.rb").file? HOST = "gemcutter.org" +config.middleware.use ::Rack::ForceDomain, HOST diff --git a/config/environments/staging.rb b/config/environments/staging.rb index b6694ba076f..b7895c8c163 100644 --- a/config/environments/staging.rb +++ b/config/environments/staging.rb @@ -8,3 +8,4 @@ require Rails.root.join("config", "secret") if Rails.root.join("config", "secret.rb").file? HOST = "staging.rubygems.org" +config.middleware.use ::Rack::ForceDomain, HOST diff --git a/vendor/bundler_gems/ruby/1.8/cache/rack-force_domain-0.1.1.gem b/vendor/bundler_gems/ruby/1.8/cache/rack-force_domain-0.1.1.gem new file mode 100644 index 00000000000..d22df25042b Binary files /dev/null and b/vendor/bundler_gems/ruby/1.8/cache/rack-force_domain-0.1.1.gem differ