#-- encoding: UTF-8 #-- copyright # OpenProject is a project management system. # Copyright (C) 2012-2014 the OpenProject Foundation (OPF) # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License version 3. # # OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: # Copyright (C) 2006-2013 Jean-Philippe Lang # Copyright (C) 2010-2013 the ChiliProject Team # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # See doc/COPYRIGHT.rdoc for more details. #++ require File.expand_path('../boot', __FILE__) require 'benchmark' module SimpleBenchmark # # Measure execution of block and display result # # Time is measured by Benchmark module, displayed time is total # (user cpu time + system cpu time + user and system cpu time of children) # This is not wallclock time. def self.bench(title) print "#{title}... " result = Benchmark.measure do yield end print "%.03fs\n" % result.total end end SimpleBenchmark.bench "require 'rails/all'" do require 'rails/all' end if defined?(Bundler) SimpleBenchmark.bench 'Bundler.require' do Bundler.require(:default, :assets, :opf_plugins, Rails.env) end end require File.dirname(__FILE__) + '/../lib/open_project/configuration' module OpenProject class Application < Rails::Application # Settings in config/environments/* take precedence over those specified here. # Application configuration should go into files in config/initializers # -- all .rb files in that directory are automatically loaded. # Custom directories with classes and modules you want to be autoloadable. # config.autoload_paths += %W(#{config.root}/extras) config.autoload_paths << Rails.root.join('lib') # Only load the plugins named here, in the order given (default is alphabetical). # :all can be used as a placeholder for all plugins not explicitly named. # config.plugins = [ :exception_notification, :ssl_requirement, :all ] # Activate observers that should always be running. # config.active_record.observers = :cacher, :garbage_collector, :forum_observer config.active_record.observers = :journal_observer, :message_observer, :news_observer, :wiki_content_observer, :comment_observer, :work_package_observer # Set Time.zone default to the specified zone and make Active Record auto-convert to this zone. # Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC. # config.time_zone = 'Central Time (US & Canada)' # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded. # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s] # config.i18n.default_locale = :de # automatically compile translations.js config.middleware.use I18n::JS::Middleware # Configure the default encoding used in templates for Ruby 1.9. config.encoding = "utf-8" # Configure sensitive parameters which will be filtered from the log file. config.filter_parameters += [:password] # Enable the asset pipeline config.assets.enabled = true bower_assets_path = Rails.root.join(*%w(vendor assets components)) config.assets.paths << bower_assets_path.join(*%w(select2)).to_s config.assets.paths << bower_assets_path.join(*%w(jquery-ui themes base)).to_s config.assets.paths << bower_assets_path.join(*%w(jquery.atwho dist)).to_s # Whitelist assets to be precompiled. # # This is a workaround for an issue where the precompilation process will # fail on extensionless files (README, LICENSE, etc.) # See: https://github.com/sstephenson/sprockets/issues/347 precompile_whitelist = %w( .html .erb .haml .png .jpg .gif .jpeg .ico .eot .otf .svc .woff .ttf .svg ) config.assets.precompile.shift config.assets.precompile.unshift -> (path) { (extension = File.extname(path)).present? and extension.in?(precompile_whitelist) } config.assets.precompile += %w(jquery-ui/themes/base/jquery-ui.css select2/select2.css) # Enable escaping HTML in JSON. config.active_support.escape_html_entities_in_json = true # Use SQL instead of Active Record's schema dumper when creating the database. # This is necessary if your schema can't be completely dumped by the schema dumper, # like if you have constraints or database-specific column types # config.active_record.schema_format = :sql # Load any local configuration that is kept out of source control # (e.g. patches). if File.exists?(File.join(File.dirname(__FILE__), 'additional_environment.rb')) instance_eval File.read(File.join(File.dirname(__FILE__), 'additional_environment.rb')) end # Enforce whitelist mode for mass assignment. # This will create an empty whitelist of attributes available for mass-assignment for all models # in your app. As such, your models will need to explicitly whitelist or blacklist accessible # parameters by using an attr_accessible or attr_protected declaration. config.active_record.whitelist_attributes = false # Version of your assets, change this if you want to expire all your assets config.assets.version = '1.0' # initialize variable for register plugin tests config.plugins_to_test_paths = [] # Configure the relative url root to be whatever the configuration is set to. # This allows for setting the root either via config file or via environment variable. config.action_controller.relative_url_root = OpenProject::Configuration['rails_relative_url_root'] config.to_prepare do # Rails loads app/views paths of all plugin on each request and appends it to the view_paths. # Thus, they end up behind the core view path and core views are found before plugin views. # To change this behaviour, we just reverse the view_path order on each request so plugin views # take precedence. ApplicationController.view_paths = ActionView::PathSet.new(ApplicationController.view_paths.to_ary.reverse) ActionMailer::Base.view_paths = ActionView::PathSet.new(ActionMailer::Base.view_paths.to_ary.reverse) end # Load API files config.paths.add File.join('app', 'api'), glob: File.join('**', '*.rb') config.autoload_paths += Dir[Rails.root.join('app', 'api', '*')] OpenProject::Configuration.configure_cache(config) end end