Further repo browser/Dolt integration work
[gitorious:pkong23s-mainline.git] / config / application.rb
1 # encoding: utf-8
2 #--
3 #   Copyright (C) 2012 Gitorious AS
4 #
5 #   This program is free software: you can redistribute it and/or modify
6 #   it under the terms of the GNU Affero General Public License as published by
7 #   the Free Software Foundation, either version 3 of the License, or
8 #   (at your option) any later version.
9 #
10 #   This program is distributed in the hope that it will be useful,
11 #   but WITHOUT ANY WARRANTY; without even the implied warranty of
12 #   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 #   GNU Affero General Public License for more details.
14 #
15 #   You should have received a copy of the GNU Affero General Public License
16 #   along with this program.  If not, see <http://www.gnu.org/licenses/>.
17 #++
18
19 require File.expand_path("../boot", __FILE__)
20 require "rails/all"
21
22 Bundler.require(:default, Rails.env) if defined?(Bundler)
23
24 module Gitorious
25   class Application < Rails::Application
26     config.autoload_paths += [config.root.join("lib")]
27     config.encoding = "utf-8"
28
29     # Required for the async Dolt integration to work properly
30     config.threadsafe!
31
32     # Settings in config/environments/* take precedence over those specified here.
33     # Application configuration should go into files in config/initializers
34     # -- all .rb files in that directory are automatically loaded.
35     # See Rails::Configuration for more options.
36
37     # Skip frameworks you're not going to use. To use Rails without a database
38     # you must remove the Active Record framework.
39     # config.frameworks -= [ :active_record, :active_resource, :action_mailer ]
40     config.filter_parameters += [:password, :password_confirmation]
41
42     # Only load the plugins named here, in the order given. By default, all plugins
43     # in vendor/plugins are loaded in alphabetical order.
44     # :all can be used as a placeholder for all plugins not explicitly named
45     # config.plugins = [ :exception_notification, :ssl_requirement, :all ]
46
47     # Add additional load paths for your own custom dirs
48     config.autoload_paths << (Rails.root + "lib/gitorious").to_s
49     config.autoload_paths << (Rails.root + "app").to_s
50
51     # Avoid class cache errors like "A copy of Gitorious::XYZ has been removed
52     # from the module tree but is still active!"
53     config.autoload_once_paths << (Rails.root + "lib/gitorious").to_s
54
55     # Force all environments to use the same logger level
56     # (by default production uses :info, the others :debug)
57     # config.log_level = :debug
58
59     # Make Time.zone default to the specified zone, and make Active Record store time values
60     # in the database in UTC, and return them converted to the specified local zone.
61     # Run "rake -D time" for a list of tasks for finding time zone names. Comment line to use default local time.
62     config.time_zone = "UTC"
63
64     # The internationalization framework can be changed to have another default locale (standard is :en) or more load paths.
65     # All files from config/locales/*.rb,yml are added automatically.
66     # config.i18n.load_path << Dir[File.join(RAILS_ROOT, 'my', 'locales', '*.{rb,yml}')]
67     # config.i18n.default_locale = :de
68
69     # Your secret key for verifying cookie session data integrity.
70     # If you change this key, all old sessions will become invalid!
71     # Make sure the secret is at least 30 characters and all random,
72     # no regular words or you'll be exposed to dictionary attacks.
73
74     # Use the database for sessions instead of the cookie-based default,
75     # which shouldn't be used to store highly confidential information
76     # (create the session table with "rake db:sessions:create")
77     #config.action_controller.session_store = :active_record_store
78
79     # Use SQL instead of Active Record's schema dumper when creating the test database.
80     # This is necessary if your schema can't be completely dumped by the schema dumper,
81     # like if you have constraints or database-specific column types
82     # config.active_record.schema_format = :sql
83
84     # Activate observers that should always be running
85     # Please note that observers generated using script/generate observer need to have an _observer suffix
86     # config.active_record.observers = :cacher, :garbage_collector, :forum_observer
87
88     # Activate observers that should always be running
89     config.active_record.observers = [
90         :user_observer
91     ]
92
93     config.after_initialize do
94       OAuth::Consumer.class_eval {
95         remove_const(:CA_FILE) if const_defined?(:CA_FILE)
96       }
97
98       OAuth::Consumer::CA_FILE = nil
99       Gitorious::Plugin::post_load
100       Grit::Git.git_binary = Gitorious.git_binary
101       Gitorious::SearchIndex.setup
102
103       require "gitorious/reservations"
104       Rails.application.reload_routes!
105       Repository.reserve_names(Gitorious::Reservations.repository_names)
106
107       # Set global locale
108       I18n.locale = I18n.default_locale = Gitorious::Configuration.get("locale", "en")
109
110       exception_recipients = Gitorious::Configuration.get("exception_recipients")
111       if Rails.env.production? && exception_recipients.blank?
112         $stderr.puts "WARNING! No value set for exception_recipients in gitorious.yml."
113         $stderr.puts "Will not be able to send email regarding unhandled exceptions"
114       else
115         Gitorious::Application.config.middleware.use(ExceptionNotifier, {
116           :email_prefix => "[Gitorious] ",
117           :sender_address => %{"Exception notifier" <notifier@gitorious>},
118           :exception_recipients => exception_recipients
119         })
120       end
121
122       Gitorious::Application.config.session_store(:cookie_store, {
123         :key => "_gitorious_session",
124         :domain => Gitorious.host =~ /\./ ? ".#{Gitorious.host}" : "",
125         :expire_after => 3.weeks
126       })
127
128       implementation = Gitorious::Configuration.get("enable_ldap_authorization", false) ? LdapGroup : Group
129       Team.group_implementation = implementation
130     end
131
132     # require (Rails.root + "app/middlewares/git_http_cloner.rb").realpath
133     # config.middleware.insert_before ActionDispatch::Cookies, ::GitHttpCloner
134   end
135 end