apartment 0.26.1 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rspec +1 -1
- data/.ruby-version +1 -1
- data/.travis.yml +9 -0
- data/HISTORY.md +8 -0
- data/README.md +30 -7
- data/TODO.md +9 -0
- data/apartment.gemspec +9 -8
- data/lib/apartment.rb +9 -18
- data/lib/apartment/adapters/abstract_adapter.rb +63 -30
- data/lib/apartment/adapters/jdbc_mysql_adapter.rb +2 -2
- data/lib/apartment/adapters/jdbc_postgresql_adapter.rb +3 -3
- data/lib/apartment/adapters/mysql2_adapter.rb +10 -6
- data/lib/apartment/adapters/postgresql_adapter.rb +15 -21
- data/lib/apartment/adapters/sqlite3_adapter.rb +4 -4
- data/lib/apartment/deprecation.rb +13 -0
- data/lib/apartment/elevators/generic.rb +3 -2
- data/lib/apartment/elevators/host_hash.rb +1 -1
- data/lib/apartment/migrator.rb +3 -3
- data/lib/apartment/tasks/enhancements.rb +31 -21
- data/lib/apartment/tenant.rb +10 -7
- data/lib/apartment/version.rb +1 -1
- data/lib/generators/apartment/install/templates/apartment.rb +41 -22
- data/lib/tasks/apartment.rake +1 -1
- data/spec/adapters/jdbc_mysql_adapter_spec.rb +1 -1
- data/spec/adapters/jdbc_postgresql_adapter_spec.rb +2 -2
- data/spec/adapters/mysql2_adapter_spec.rb +4 -2
- data/spec/adapters/postgresql_adapter_spec.rb +3 -3
- data/spec/adapters/sqlite3_adapter_spec.rb +1 -1
- data/spec/dummy_engine/.gitignore +8 -0
- data/spec/dummy_engine/Gemfile +15 -0
- data/spec/dummy_engine/Rakefile +34 -0
- data/spec/dummy_engine/bin/rails +12 -0
- data/spec/dummy_engine/config/initializers/apartment.rb +51 -0
- data/spec/dummy_engine/dummy_engine.gemspec +24 -0
- data/spec/dummy_engine/lib/dummy_engine.rb +4 -0
- data/spec/dummy_engine/lib/dummy_engine/engine.rb +4 -0
- data/spec/dummy_engine/lib/dummy_engine/version.rb +3 -0
- data/spec/dummy_engine/test/dummy/Rakefile +6 -0
- data/spec/dummy_engine/test/dummy/config.ru +4 -0
- data/spec/dummy_engine/test/dummy/config/application.rb +22 -0
- data/spec/dummy_engine/test/dummy/config/boot.rb +5 -0
- data/spec/dummy_engine/test/dummy/config/database.yml +25 -0
- data/spec/dummy_engine/test/dummy/config/environment.rb +5 -0
- data/spec/dummy_engine/test/dummy/config/environments/development.rb +37 -0
- data/spec/dummy_engine/test/dummy/config/environments/production.rb +78 -0
- data/spec/dummy_engine/test/dummy/config/environments/test.rb +39 -0
- data/spec/dummy_engine/test/dummy/config/initializers/assets.rb +8 -0
- data/spec/dummy_engine/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/spec/dummy_engine/test/dummy/config/initializers/cookies_serializer.rb +3 -0
- data/spec/dummy_engine/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
- data/spec/dummy_engine/test/dummy/config/initializers/inflections.rb +16 -0
- data/spec/dummy_engine/test/dummy/config/initializers/mime_types.rb +4 -0
- data/spec/dummy_engine/test/dummy/config/initializers/session_store.rb +3 -0
- data/spec/dummy_engine/test/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/spec/dummy_engine/test/dummy/config/locales/en.yml +23 -0
- data/spec/dummy_engine/test/dummy/config/routes.rb +56 -0
- data/spec/dummy_engine/test/dummy/config/secrets.yml +22 -0
- data/spec/examples/connection_adapter_examples.rb +5 -5
- data/spec/examples/generic_adapter_examples.rb +75 -37
- data/spec/examples/schema_adapter_examples.rb +19 -24
- data/spec/integration/query_caching_spec.rb +3 -3
- data/spec/integration/use_within_an_engine_spec.rb +28 -0
- data/spec/spec_helper.rb +1 -1
- data/spec/support/setup.rb +9 -9
- data/spec/{database_spec.rb → tenant_spec.rb} +20 -30
- data/spec/unit/config_spec.rb +2 -2
- data/spec/unit/elevators/domain_spec.rb +1 -1
- data/spec/unit/elevators/generic_spec.rb +2 -2
- data/spec/unit/elevators/host_hash_spec.rb +5 -5
- data/spec/unit/elevators/subdomain_spec.rb +2 -2
- data/spec/unit/migrator_spec.rb +7 -7
- metadata +104 -43
data/lib/tasks/apartment.rake
CHANGED
@@ -35,7 +35,7 @@ apartment_namespace = namespace :apartment do
|
|
35
35
|
tenants.each do |tenant|
|
36
36
|
begin
|
37
37
|
puts("Seeding #{tenant} tenant")
|
38
|
-
Apartment::Tenant.
|
38
|
+
Apartment::Tenant.switch(tenant) do
|
39
39
|
Apartment::Tenant.seed
|
40
40
|
end
|
41
41
|
rescue Apartment::TenantNotFound => e
|
@@ -11,7 +11,7 @@ if defined?(JRUBY_VERSION)
|
|
11
11
|
ActiveRecord::Base.connection.execute("SELECT schema_name FROM information_schema.schemata").collect { |row| row['schema_name'] }
|
12
12
|
end
|
13
13
|
|
14
|
-
let(:default_tenant) { subject.
|
14
|
+
let(:default_tenant) { subject.switch { ActiveRecord::Base.connection.current_database } }
|
15
15
|
|
16
16
|
it_should_behave_like "a generic apartment adapter"
|
17
17
|
it_should_behave_like "a connection based apartment adapter"
|
@@ -16,7 +16,7 @@ if defined?(JRUBY_VERSION)
|
|
16
16
|
ActiveRecord::Base.connection.execute("SELECT nspname FROM pg_namespace;").collect { |row| row['nspname'] }
|
17
17
|
end
|
18
18
|
|
19
|
-
let(:default_tenant) { subject.
|
19
|
+
let(:default_tenant) { subject.switch { ActiveRecord::Base.connection.schema_search_path.gsub('"', '') } }
|
20
20
|
|
21
21
|
it_should_behave_like "a generic apartment adapter"
|
22
22
|
it_should_behave_like "a schema based apartment adapter"
|
@@ -31,7 +31,7 @@ if defined?(JRUBY_VERSION)
|
|
31
31
|
connection.execute("select datname from pg_database;").collect { |row| row['datname'] }
|
32
32
|
end
|
33
33
|
|
34
|
-
let(:default_tenant) { subject.
|
34
|
+
let(:default_tenant) { subject.switch { ActiveRecord::Base.connection.current_database } }
|
35
35
|
|
36
36
|
it_should_behave_like "a generic apartment adapter"
|
37
37
|
it_should_behave_like "a connection based apartment adapter"
|
@@ -10,7 +10,7 @@ describe Apartment::Adapters::Mysql2Adapter, database: :mysql do
|
|
10
10
|
ActiveRecord::Base.connection.execute("SELECT schema_name FROM information_schema.schemata").collect { |row| row[0] }
|
11
11
|
end
|
12
12
|
|
13
|
-
let(:default_tenant) { subject.
|
13
|
+
let(:default_tenant) { subject.switch { ActiveRecord::Base.connection.current_database } }
|
14
14
|
|
15
15
|
context "using - the equivalent of - schemas" do
|
16
16
|
before { Apartment.use_schemas = true }
|
@@ -18,7 +18,9 @@ describe Apartment::Adapters::Mysql2Adapter, database: :mysql do
|
|
18
18
|
it_should_behave_like "a generic apartment adapter"
|
19
19
|
|
20
20
|
describe "#default_tenant" do
|
21
|
-
|
21
|
+
it "is set to the original db from config" do
|
22
|
+
expect(subject.default_tenant).to eq(config[:database])
|
23
|
+
end
|
22
24
|
end
|
23
25
|
|
24
26
|
describe "#init" do
|
@@ -15,7 +15,7 @@ describe Apartment::Adapters::PostgresqlAdapter, database: :postgresql do
|
|
15
15
|
ActiveRecord::Base.connection.execute("SELECT nspname FROM pg_namespace;").collect { |row| row['nspname'] }
|
16
16
|
end
|
17
17
|
|
18
|
-
let(:default_tenant) { subject.
|
18
|
+
let(:default_tenant) { subject.switch { ActiveRecord::Base.connection.schema_search_path.gsub('"', '') } }
|
19
19
|
|
20
20
|
it_should_behave_like "a generic apartment adapter"
|
21
21
|
it_should_behave_like "a schema based apartment adapter"
|
@@ -30,7 +30,7 @@ describe Apartment::Adapters::PostgresqlAdapter, database: :postgresql do
|
|
30
30
|
ActiveRecord::Base.connection.execute("SELECT nspname FROM pg_namespace;").collect { |row| row['nspname'] }
|
31
31
|
end
|
32
32
|
|
33
|
-
let(:default_tenant) { subject.
|
33
|
+
let(:default_tenant) { subject.switch { ActiveRecord::Base.connection.schema_search_path.gsub('"', '') } }
|
34
34
|
|
35
35
|
it_should_behave_like "a generic apartment adapter"
|
36
36
|
it_should_behave_like "a schema based apartment adapter"
|
@@ -51,7 +51,7 @@ describe Apartment::Adapters::PostgresqlAdapter, database: :postgresql do
|
|
51
51
|
connection.execute("select datname from pg_database;").collect { |row| row['datname'] }
|
52
52
|
end
|
53
53
|
|
54
|
-
let(:default_tenant) { subject.
|
54
|
+
let(:default_tenant) { subject.switch { ActiveRecord::Base.connection.current_database } }
|
55
55
|
|
56
56
|
it_should_behave_like "a generic apartment adapter"
|
57
57
|
it_should_behave_like "a connection based apartment adapter"
|
@@ -13,7 +13,7 @@ describe Apartment::Adapters::Sqlite3Adapter, database: :sqlite do
|
|
13
13
|
end
|
14
14
|
|
15
15
|
let(:default_tenant) do
|
16
|
-
subject.
|
16
|
+
subject.switch { File.basename(Apartment::Test.config['connections']['sqlite']['database'], '.sqlite3') }
|
17
17
|
end
|
18
18
|
|
19
19
|
it_should_behave_like "a generic apartment adapter"
|
@@ -0,0 +1,15 @@
|
|
1
|
+
source "https://rubygems.org"
|
2
|
+
|
3
|
+
# Declare your gem's dependencies in dummy_engine.gemspec.
|
4
|
+
# Bundler will treat runtime dependencies like base dependencies, and
|
5
|
+
# development dependencies will be added by default to the :development group.
|
6
|
+
gemspec
|
7
|
+
|
8
|
+
# Declare any dependencies that are still in development here instead of in
|
9
|
+
# your gemspec. These might include edge Rails or gems from your path or
|
10
|
+
# Git. Remember to move these dependencies to your gemspec before releasing
|
11
|
+
# your gem to rubygems.org.
|
12
|
+
|
13
|
+
# To use debugger
|
14
|
+
# gem 'debugger'
|
15
|
+
gem 'apartment', path: '../../'
|
@@ -0,0 +1,34 @@
|
|
1
|
+
begin
|
2
|
+
require 'bundler/setup'
|
3
|
+
rescue LoadError
|
4
|
+
puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
|
5
|
+
end
|
6
|
+
|
7
|
+
require 'rdoc/task'
|
8
|
+
|
9
|
+
RDoc::Task.new(:rdoc) do |rdoc|
|
10
|
+
rdoc.rdoc_dir = 'rdoc'
|
11
|
+
rdoc.title = 'DummyEngine'
|
12
|
+
rdoc.options << '--line-numbers'
|
13
|
+
rdoc.rdoc_files.include('README.rdoc')
|
14
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
15
|
+
end
|
16
|
+
|
17
|
+
APP_RAKEFILE = File.expand_path("../test/dummy/Rakefile", __FILE__)
|
18
|
+
load 'rails/tasks/engine.rake'
|
19
|
+
|
20
|
+
|
21
|
+
|
22
|
+
Bundler::GemHelper.install_tasks
|
23
|
+
|
24
|
+
require 'rake/testtask'
|
25
|
+
|
26
|
+
Rake::TestTask.new(:test) do |t|
|
27
|
+
t.libs << 'lib'
|
28
|
+
t.libs << 'test'
|
29
|
+
t.pattern = 'test/**/*_test.rb'
|
30
|
+
t.verbose = false
|
31
|
+
end
|
32
|
+
|
33
|
+
|
34
|
+
task default: :test
|
@@ -0,0 +1,12 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# This command will automatically be run when you run "rails" with Rails 4 gems installed from the root of your application.
|
3
|
+
|
4
|
+
ENGINE_ROOT = File.expand_path('../..', __FILE__)
|
5
|
+
ENGINE_PATH = File.expand_path('../../lib/dummy_engine/engine', __FILE__)
|
6
|
+
|
7
|
+
# Set up gems listed in the Gemfile.
|
8
|
+
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)
|
9
|
+
require 'bundler/setup' if File.exist?(ENV['BUNDLE_GEMFILE'])
|
10
|
+
|
11
|
+
require 'rails/all'
|
12
|
+
require 'rails/engine/commands'
|
@@ -0,0 +1,51 @@
|
|
1
|
+
# Require whichever elevator you're using below here...
|
2
|
+
#
|
3
|
+
# require 'apartment/elevators/generic'
|
4
|
+
# require 'apartment/elevators/domain'
|
5
|
+
require 'apartment/elevators/subdomain'
|
6
|
+
|
7
|
+
#
|
8
|
+
# Apartment Configuration
|
9
|
+
#
|
10
|
+
Apartment.configure do |config|
|
11
|
+
|
12
|
+
# These models will not be multi-tenanted,
|
13
|
+
# but remain in the global (public) namespace
|
14
|
+
#
|
15
|
+
# An example might be a Customer or Tenant model that stores each tenant information
|
16
|
+
# ex:
|
17
|
+
#
|
18
|
+
# config.excluded_models = %w{Tenant}
|
19
|
+
#
|
20
|
+
config.excluded_models = %w{}
|
21
|
+
|
22
|
+
# use postgres schemas?
|
23
|
+
config.use_schemas = true
|
24
|
+
|
25
|
+
# use raw SQL dumps for creating postgres schemas? (only appies with use_schemas set to true)
|
26
|
+
#config.use_sql = true
|
27
|
+
|
28
|
+
# configure persistent schemas (E.g. hstore )
|
29
|
+
# config.persistent_schemas = %w{ hstore }
|
30
|
+
|
31
|
+
# add the Rails environment to database names?
|
32
|
+
# config.prepend_environment = true
|
33
|
+
# config.append_environment = true
|
34
|
+
|
35
|
+
# supply list of database names for migrations to run on
|
36
|
+
# config.tenant_names = lambda{ ToDo_Tenant_Or_User_Model.pluck :database }
|
37
|
+
|
38
|
+
# Specify a connection other than ActiveRecord::Base for apartment to use (only needed if your models are using a different connection)
|
39
|
+
# config.connection_class = ActiveRecord::Base
|
40
|
+
end
|
41
|
+
|
42
|
+
##
|
43
|
+
# Elevator Configuration
|
44
|
+
|
45
|
+
# Rails.application.config.middleware.use 'Apartment::Elevators::Generic', lambda { |request|
|
46
|
+
# # TODO: supply generic implementation
|
47
|
+
# }
|
48
|
+
|
49
|
+
# Rails.application.config.middleware.use 'Apartment::Elevators::Domain'
|
50
|
+
|
51
|
+
Rails.application.config.middleware.use 'Apartment::Elevators::Subdomain'
|
@@ -0,0 +1,24 @@
|
|
1
|
+
$:.push File.expand_path("../lib", __FILE__)
|
2
|
+
|
3
|
+
# Maintain your gem's version:
|
4
|
+
require "dummy_engine/version"
|
5
|
+
|
6
|
+
# Describe your gem and declare its dependencies:
|
7
|
+
Gem::Specification.new do |s|
|
8
|
+
s.name = "dummy_engine"
|
9
|
+
s.version = DummyEngine::VERSION
|
10
|
+
s.authors = ["Your name"]
|
11
|
+
s.email = ["Your email"]
|
12
|
+
s.homepage = ""
|
13
|
+
s.summary = "Summary of DummyEngine."
|
14
|
+
s.description = "Description of DummyEngine."
|
15
|
+
s.license = "MIT"
|
16
|
+
|
17
|
+
s.files = Dir["{app,config,db,lib}/**/*", "MIT-LICENSE", "Rakefile", "README.rdoc"]
|
18
|
+
s.test_files = Dir["test/**/*"]
|
19
|
+
|
20
|
+
s.add_dependency "rails", "~> 4.1.6"
|
21
|
+
s.add_dependency "apartment"
|
22
|
+
|
23
|
+
s.add_development_dependency "sqlite3"
|
24
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require File.expand_path('../boot', __FILE__)
|
2
|
+
|
3
|
+
require 'rails/all'
|
4
|
+
|
5
|
+
Bundler.require(*Rails.groups)
|
6
|
+
require "dummy_engine"
|
7
|
+
|
8
|
+
module Dummy
|
9
|
+
class Application < Rails::Application
|
10
|
+
# Settings in config/environments/* take precedence over those specified here.
|
11
|
+
# Application configuration should go into files in config/initializers
|
12
|
+
# -- all .rb files in that directory are automatically loaded.
|
13
|
+
|
14
|
+
# Set Time.zone default to the specified zone and make Active Record auto-convert to this zone.
|
15
|
+
# Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC.
|
16
|
+
# config.time_zone = 'Central Time (US & Canada)'
|
17
|
+
|
18
|
+
# The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
|
19
|
+
# config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]
|
20
|
+
# config.i18n.default_locale = :de
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# SQLite version 3.x
|
2
|
+
# gem install sqlite3
|
3
|
+
#
|
4
|
+
# Ensure the SQLite 3 gem is defined in your Gemfile
|
5
|
+
# gem 'sqlite3'
|
6
|
+
#
|
7
|
+
default: &default
|
8
|
+
adapter: sqlite3
|
9
|
+
pool: 5
|
10
|
+
timeout: 5000
|
11
|
+
|
12
|
+
development:
|
13
|
+
<<: *default
|
14
|
+
database: db/development.sqlite3
|
15
|
+
|
16
|
+
# Warning: The database defined as "test" will be erased and
|
17
|
+
# re-generated from your development database when you run "rake".
|
18
|
+
# Do not set this db to the same as development or production.
|
19
|
+
test:
|
20
|
+
<<: *default
|
21
|
+
database: db/test.sqlite3
|
22
|
+
|
23
|
+
production:
|
24
|
+
<<: *default
|
25
|
+
database: db/production.sqlite3
|
@@ -0,0 +1,37 @@
|
|
1
|
+
Rails.application.configure do
|
2
|
+
# Settings specified here will take precedence over those in config/application.rb.
|
3
|
+
|
4
|
+
# In the development environment your application's code is reloaded on
|
5
|
+
# every request. This slows down response time but is perfect for development
|
6
|
+
# since you don't have to restart the web server when you make code changes.
|
7
|
+
config.cache_classes = false
|
8
|
+
|
9
|
+
# Do not eager load code on boot.
|
10
|
+
config.eager_load = false
|
11
|
+
|
12
|
+
# Show full error reports and disable caching.
|
13
|
+
config.consider_all_requests_local = true
|
14
|
+
config.action_controller.perform_caching = false
|
15
|
+
|
16
|
+
# Don't care if the mailer can't send.
|
17
|
+
config.action_mailer.raise_delivery_errors = false
|
18
|
+
|
19
|
+
# Print deprecation notices to the Rails logger.
|
20
|
+
config.active_support.deprecation = :log
|
21
|
+
|
22
|
+
# Raise an error on page load if there are pending migrations.
|
23
|
+
config.active_record.migration_error = :page_load
|
24
|
+
|
25
|
+
# Debug mode disables concatenation and preprocessing of assets.
|
26
|
+
# This option may cause significant delays in view rendering with a large
|
27
|
+
# number of complex assets.
|
28
|
+
config.assets.debug = true
|
29
|
+
|
30
|
+
# Adds additional error checking when serving assets at runtime.
|
31
|
+
# Checks for improperly declared sprockets dependencies.
|
32
|
+
# Raises helpful error messages.
|
33
|
+
config.assets.raise_runtime_errors = true
|
34
|
+
|
35
|
+
# Raises error for missing translations
|
36
|
+
# config.action_view.raise_on_missing_translations = true
|
37
|
+
end
|
@@ -0,0 +1,78 @@
|
|
1
|
+
Rails.application.configure do
|
2
|
+
# Settings specified here will take precedence over those in config/application.rb.
|
3
|
+
|
4
|
+
# Code is not reloaded between requests.
|
5
|
+
config.cache_classes = true
|
6
|
+
|
7
|
+
# Eager load code on boot. This eager loads most of Rails and
|
8
|
+
# your application in memory, allowing both threaded web servers
|
9
|
+
# and those relying on copy on write to perform better.
|
10
|
+
# Rake tasks automatically ignore this option for performance.
|
11
|
+
config.eager_load = true
|
12
|
+
|
13
|
+
# Full error reports are disabled and caching is turned on.
|
14
|
+
config.consider_all_requests_local = false
|
15
|
+
config.action_controller.perform_caching = true
|
16
|
+
|
17
|
+
# Enable Rack::Cache to put a simple HTTP cache in front of your application
|
18
|
+
# Add `rack-cache` to your Gemfile before enabling this.
|
19
|
+
# For large-scale production use, consider using a caching reverse proxy like nginx, varnish or squid.
|
20
|
+
# config.action_dispatch.rack_cache = true
|
21
|
+
|
22
|
+
# Disable Rails's static asset server (Apache or nginx will already do this).
|
23
|
+
config.serve_static_assets = false
|
24
|
+
|
25
|
+
# Compress JavaScripts and CSS.
|
26
|
+
config.assets.js_compressor = :uglifier
|
27
|
+
# config.assets.css_compressor = :sass
|
28
|
+
|
29
|
+
# Do not fallback to assets pipeline if a precompiled asset is missed.
|
30
|
+
config.assets.compile = false
|
31
|
+
|
32
|
+
# Generate digests for assets URLs.
|
33
|
+
config.assets.digest = true
|
34
|
+
|
35
|
+
# `config.assets.precompile` and `config.assets.version` have moved to config/initializers/assets.rb
|
36
|
+
|
37
|
+
# Specifies the header that your server uses for sending files.
|
38
|
+
# config.action_dispatch.x_sendfile_header = "X-Sendfile" # for apache
|
39
|
+
# config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for nginx
|
40
|
+
|
41
|
+
# Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies.
|
42
|
+
# config.force_ssl = true
|
43
|
+
|
44
|
+
# Set to :debug to see everything in the log.
|
45
|
+
config.log_level = :info
|
46
|
+
|
47
|
+
# Prepend all log lines with the following tags.
|
48
|
+
# config.log_tags = [ :subdomain, :uuid ]
|
49
|
+
|
50
|
+
# Use a different logger for distributed setups.
|
51
|
+
# config.logger = ActiveSupport::TaggedLogging.new(SyslogLogger.new)
|
52
|
+
|
53
|
+
# Use a different cache store in production.
|
54
|
+
# config.cache_store = :mem_cache_store
|
55
|
+
|
56
|
+
# Enable serving of images, stylesheets, and JavaScripts from an asset server.
|
57
|
+
# config.action_controller.asset_host = "http://assets.example.com"
|
58
|
+
|
59
|
+
# Ignore bad email addresses and do not raise email delivery errors.
|
60
|
+
# Set this to true and configure the email server for immediate delivery to raise delivery errors.
|
61
|
+
# config.action_mailer.raise_delivery_errors = false
|
62
|
+
|
63
|
+
# Enable locale fallbacks for I18n (makes lookups for any locale fall back to
|
64
|
+
# the I18n.default_locale when a translation cannot be found).
|
65
|
+
config.i18n.fallbacks = true
|
66
|
+
|
67
|
+
# Send deprecation notices to registered listeners.
|
68
|
+
config.active_support.deprecation = :notify
|
69
|
+
|
70
|
+
# Disable automatic flushing of the log to improve performance.
|
71
|
+
# config.autoflush_log = false
|
72
|
+
|
73
|
+
# Use default logging formatter so that PID and timestamp are not suppressed.
|
74
|
+
config.log_formatter = ::Logger::Formatter.new
|
75
|
+
|
76
|
+
# Do not dump schema after migrations.
|
77
|
+
config.active_record.dump_schema_after_migration = false
|
78
|
+
end
|