Merge branch 'next' into feature/rails3
[gitorious: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
21 require 'rails/all'
22
23 Bundler.require(:default, Rails.env) if defined?(Bundler)
24
25 module Gitorious
26   class Application < Rails::Application
27     config.autoload_paths += [config.root.join('lib')]
28     config.encoding = 'utf-8'
29     gitorious_yaml = YAML.load_file(Rails.root + "config/gitorious.yml")[Rails.env]
30     raise "Your config/gitorious.yml does not have an entry for your current Rails environment. Please consult config/gitorious.sample.yml for instructions." unless gitorious_yaml
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")
49     config.autoload_paths << (Rails.root + "app")
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")
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 = GitoriousConfig["git_binary"]
101       Gitorious::SearchIndex.setup
102     end
103
104     gts_config = YAML.load_file(Rails.root + "config/gitorious.yml")[Rails.env]
105
106     Gitorious::Application.config.middleware.use(ExceptionNotifier,
107                                                  :email_prefix => "[Gitorious] ",
108                                                  :sender_address => %{"Exception notifier" <notifier@gitorious>},
109                                                  :exception_recipients => gts_config["exception_notification_emails"])
110   end
111 end