metasploit_data_models 1.3.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/.gitignore +2 -0
- data/Gemfile +7 -16
- data/app/models/mdm/workspace.rb +1 -44
- data/app/models/metasploit_data_models/search/visitor/where.rb +1 -1
- data/db/migrate/20160415153312_remove_not_null_from_web_vuln_p_arams.rb +5 -0
- data/lib/metasploit_data_models/version.rb +1 -1
- data/metasploit_data_models.gemspec +8 -9
- data/spec/app/models/mdm/host_spec.rb +1 -1
- data/spec/app/models/mdm/web_vuln_spec.rb +1 -1
- data/spec/app/models/mdm/workspace_spec.rb +1 -54
- data/spec/app/models/metasploit_data_models/search/visitor/relation_spec.rb +1 -1
- data/spec/dummy/bin/bundle +3 -0
- data/spec/dummy/bin/rails +4 -0
- data/spec/dummy/bin/rake +4 -0
- data/spec/dummy/config/boot.rb +3 -9
- data/spec/dummy/config/environment.rb +3 -3
- data/spec/dummy/config/environments/development.rb +22 -8
- data/spec/dummy/config/environments/production.rb +43 -31
- data/spec/dummy/config/environments/test.rb +19 -10
- data/spec/dummy/config/initializers/assets.rb +8 -0
- data/spec/dummy/config/initializers/cookies_serializer.rb +3 -0
- data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
- data/spec/dummy/config/initializers/inflections.rb +6 -5
- data/spec/dummy/config/initializers/mime_types.rb +0 -1
- data/spec/dummy/config/initializers/session_store.rb +1 -6
- data/spec/dummy/config/initializers/wrap_parameters.rb +6 -6
- data/spec/dummy/config/locales/en.yml +23 -0
- data/spec/dummy/db/structure.sql +78 -75
- data/spec/spec_helper.rb +0 -5
- metadata +42 -52
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9e3831b7d870ff2f6137158b6b3834424a60d6e6
|
4
|
+
data.tar.gz: 203a3c40853109a9c1f2b66c45d278c1eb42345b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 70986e57992f2d364bb3fc1ec81267f889529877f4a2795245af315ad3d12b339a353fab8d81e1f96104af9c6581037babbe50874f33289aee936e5b79b6a54d
|
7
|
+
data.tar.gz: b99e4c92772eaf4223d2a6e68c0693a675d99268382287a8eeaad21c818361b3e13b4d5421793abbd19badf589378a0c26871f629f815c6e4733dac3abdf2675
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/.gitignore
CHANGED
data/Gemfile
CHANGED
@@ -3,17 +3,11 @@ source "https://rubygems.org"
|
|
3
3
|
# Specify your gem's dependencies in metasploit_data_models.gemspec
|
4
4
|
gemspec
|
5
5
|
|
6
|
-
# gem 'metasploit-yard', github: 'rapid7/metasploit-yard', branch: 'staging/rails-upgrade'
|
7
|
-
# gem 'metasploit-erd', github: 'rapid7/metasploit-erd', branch: 'staging/rails-upgrade'
|
8
|
-
# gem 'metasploit-erd', github: 'rapid7/yard-metasploit-erd', branch: 'staging/rails-upgrade'
|
9
|
-
# gem 'metasploit-erd', github: 'rapid7/metasploit-concern', branch: 'staging/rails-upgrade'
|
10
|
-
# gem 'metasploit-erd', github: 'rapid7/metasploit-model', branch: 'staging/rails-upgrade'
|
11
|
-
|
12
6
|
|
13
7
|
group :development do
|
14
|
-
gem 'metasploit-erd'
|
8
|
+
#gem 'metasploit-erd'
|
15
9
|
# embed ERDs on index, namespace Module and Class<ActiveRecord::Base> pages
|
16
|
-
gem 'yard-metasploit-erd'
|
10
|
+
#gem 'yard-metasploit-erd'
|
17
11
|
end
|
18
12
|
|
19
13
|
# used by dummy application
|
@@ -22,15 +16,12 @@ group :development, :test do
|
|
22
16
|
gem 'coveralls', require: false
|
23
17
|
# supplies factories for producing model instance for specs
|
24
18
|
# Version 4.1.0 or newer is needed to support generate calls without the 'FactoryGirl.' in factory definitions syntax.
|
25
|
-
gem 'factory_girl'
|
19
|
+
gem 'factory_girl'
|
26
20
|
# auto-load factories from spec/factories
|
27
21
|
gem 'factory_girl_rails'
|
28
22
|
|
29
|
-
|
30
|
-
|
31
|
-
'< 4.1.0'
|
32
|
-
]
|
33
|
-
gem 'rails', *rails_version_constraint
|
23
|
+
|
24
|
+
gem 'rails', '~>4.2.6'
|
34
25
|
# Used to create fake data
|
35
26
|
gem "faker"
|
36
27
|
end
|
@@ -39,12 +30,12 @@ group :test do
|
|
39
30
|
# In a full rails project, factory_girl_rails would be in both the :development, and :test group, but since we only
|
40
31
|
# want rails in :test, factory_girl_rails must also only be in :test.
|
41
32
|
# add matchers from shoulda, such as validates_presence_of, which are useful for testing validations
|
42
|
-
gem 'shoulda-matchers'
|
33
|
+
gem 'shoulda-matchers'
|
43
34
|
# code coverage of tests
|
44
35
|
gem 'simplecov', :require => false
|
45
36
|
# need rspec-rails >= 2.12.0 as 2.12.0 adds support for redefining named subject in nested context that uses the
|
46
37
|
# named subject from the outer context without causing a stack overflow.
|
47
|
-
gem 'rspec-rails'
|
38
|
+
gem 'rspec-rails'
|
48
39
|
# used for building markup for webpage factories
|
49
40
|
gem 'builder'
|
50
41
|
end
|
data/app/models/mdm/workspace.rb
CHANGED
@@ -129,41 +129,11 @@ class Mdm::Workspace < ActiveRecord::Base
|
|
129
129
|
|
130
130
|
validates :name, :presence => true, :uniqueness => true, :length => {:maximum => 255}
|
131
131
|
validates :description, :length => {:maximum => 4096}
|
132
|
-
validate :boundary_must_be_ip_range
|
133
132
|
|
134
133
|
#
|
135
134
|
# Instance Methods
|
136
135
|
#
|
137
136
|
|
138
|
-
# If {#limit_to_network} is disabled, this will always return `true`. Otherwise, return `true` only if all of the
|
139
|
-
# given IPs are within the project {#boundary boundaries}.
|
140
|
-
#
|
141
|
-
# @param ips [String] IP range(s)
|
142
|
-
# @return [true] if actions on ips are allowed.
|
143
|
-
# @return [false] if actions are not allowed on ips.
|
144
|
-
def allow_actions_on?(ips)
|
145
|
-
return true unless limit_to_network
|
146
|
-
return true unless boundary
|
147
|
-
return true if boundary.empty?
|
148
|
-
boundaries = Shellwords.split(boundary)
|
149
|
-
return true if boundaries.empty? # It's okay if there is no boundary range after all
|
150
|
-
given_range = Rex::Socket::RangeWalker.new(ips)
|
151
|
-
return false unless given_range # Can't do things to nonexistant IPs
|
152
|
-
allowed = false
|
153
|
-
boundaries.each do |boundary_range|
|
154
|
-
ok_range = Rex::Socket::RangeWalker.new(boundary)
|
155
|
-
allowed = true if ok_range.include_range? given_range
|
156
|
-
end
|
157
|
-
return allowed
|
158
|
-
end
|
159
|
-
|
160
|
-
# Validates that {#boundary} is {#valid_ip_or_range? a valid IP address or IP address range}.
|
161
|
-
#
|
162
|
-
# @return [void]
|
163
|
-
def boundary_must_be_ip_range
|
164
|
-
errors.add(:boundary, "must be a valid IP range") unless valid_ip_or_range?(boundary)
|
165
|
-
end
|
166
|
-
|
167
137
|
# @deprecated Use `Mdm::Workspace#credential_cores` when `Metasploit::Credential::Engine` is installed to get
|
168
138
|
# `Metasploit::Credential::Core`s. Use `Mdm::Service#logins` when `Metasploit::Credential::Engine` is installed to
|
169
139
|
# get `Metasploit::Credential::Login`s.
|
@@ -265,7 +235,6 @@ class Mdm::Workspace < ActiveRecord::Base
|
|
265
235
|
Mdm::Service.join_association(:host),
|
266
236
|
Mdm::Host.join_association(:workspace)
|
267
237
|
).where(Mdm::Workspace[:id].eq(id)).uniq
|
268
|
-
|
269
238
|
end
|
270
239
|
|
271
240
|
# Web vulnerability found on {#web_sites}.
|
@@ -295,7 +264,7 @@ class Mdm::Workspace < ActiveRecord::Base
|
|
295
264
|
def web_unique_forms(addrs=nil)
|
296
265
|
forms = unique_web_forms
|
297
266
|
if addrs
|
298
|
-
forms.reject!{|f| not addrs.include?( f.web_site.service.host.address.to_s ) }
|
267
|
+
forms.to_a.reject!{|f| not addrs.include?( f.web_site.service.host.address.to_s ) }
|
299
268
|
end
|
300
269
|
forms
|
301
270
|
end
|
@@ -309,18 +278,6 @@ class Mdm::Workspace < ActiveRecord::Base
|
|
309
278
|
boundary.strip! if boundary
|
310
279
|
end
|
311
280
|
|
312
|
-
# Returns whether `string` is a valid IP address or IP address range.
|
313
|
-
#
|
314
|
-
# @return [true] if valid IP address or IP address range.
|
315
|
-
# @return [false] otherwise.
|
316
|
-
def valid_ip_or_range?(string)
|
317
|
-
begin
|
318
|
-
Rex::Socket::RangeWalker.new(string)
|
319
|
-
rescue
|
320
|
-
return false
|
321
|
-
end
|
322
|
-
end
|
323
|
-
|
324
281
|
public
|
325
282
|
|
326
283
|
Metasploit::Concern.run(self)
|
@@ -118,7 +118,7 @@ class MetasploitDataModels::Search::Visitor::Where
|
|
118
118
|
#
|
119
119
|
# @return [Arel::Nodes::NamedFunction]
|
120
120
|
def cast_to_inet(string)
|
121
|
-
cast_argument = Arel::Nodes::As.new(string, Arel::Nodes::SqlLiteral.new('INET'))
|
121
|
+
cast_argument = Arel::Nodes::As.new(Arel::Nodes.build_quoted(string), Arel::Nodes::SqlLiteral.new('INET'))
|
122
122
|
Arel::Nodes::NamedFunction.new('CAST', [cast_argument])
|
123
123
|
end
|
124
124
|
|
@@ -30,10 +30,10 @@ Gem::Specification.new do |s|
|
|
30
30
|
|
31
31
|
# ---- Dependencies ----
|
32
32
|
# documentation
|
33
|
-
s.add_development_dependency 'metasploit-yard'
|
34
|
-
s.add_development_dependency 'yard-activerecord'
|
33
|
+
s.add_development_dependency 'metasploit-yard'
|
34
|
+
s.add_development_dependency 'yard-activerecord'
|
35
35
|
# embed ERDs on index, namespace Module and Class<ActiveRecord::Base> pages
|
36
|
-
s.add_development_dependency 'yard-metasploit-erd'
|
36
|
+
s.add_development_dependency 'yard-metasploit-erd'
|
37
37
|
|
38
38
|
s.add_development_dependency 'rake'
|
39
39
|
|
@@ -43,13 +43,12 @@ Gem::Specification.new do |s|
|
|
43
43
|
# debugging
|
44
44
|
s.add_development_dependency 'pry'
|
45
45
|
|
46
|
-
rails_version_constraints = ['>= 4.0.9', '< 4.1.0']
|
47
46
|
|
48
|
-
s.add_runtime_dependency 'activerecord',
|
49
|
-
s.add_runtime_dependency 'activesupport',
|
50
|
-
s.add_runtime_dependency 'metasploit-concern'
|
51
|
-
s.add_runtime_dependency 'metasploit-model'
|
52
|
-
s.add_runtime_dependency 'railties',
|
47
|
+
s.add_runtime_dependency 'activerecord', '~>4.2.6'
|
48
|
+
s.add_runtime_dependency 'activesupport', '~>4.2.6'
|
49
|
+
s.add_runtime_dependency 'metasploit-concern'
|
50
|
+
s.add_runtime_dependency 'metasploit-model'
|
51
|
+
s.add_runtime_dependency 'railties', '~>4.2.6'
|
53
52
|
|
54
53
|
# os fingerprinting
|
55
54
|
s.add_runtime_dependency 'recog', '~> 2.0'
|
@@ -408,7 +408,7 @@ RSpec.describe Mdm::Host, type: :model do
|
|
408
408
|
let(:arch) { "asdfasdf" }
|
409
409
|
it 'should normalize to Unknown' do
|
410
410
|
expect(host).to be_valid
|
411
|
-
expect(host.arch).to
|
411
|
+
expect(host.arch).to eq described_class::UNKNOWN_ARCHITECTURE
|
412
412
|
end
|
413
413
|
end
|
414
414
|
described_class::ARCHITECTURES.each do |arch|
|
@@ -65,7 +65,7 @@ RSpec.describe Mdm::WebVuln, type: :model do
|
|
65
65
|
it { is_expected.to have_db_column(:method).of_type(:string).with_options(:limit => 1024, :null => false) }
|
66
66
|
it { is_expected.to have_db_column(:name).of_type(:string).with_options(:limit => 1024, :null => false) }
|
67
67
|
it { is_expected.to have_db_column(:owner).of_type(:string) }
|
68
|
-
it { is_expected.to have_db_column(:params).of_type(:text)
|
68
|
+
it { is_expected.to have_db_column(:params).of_type(:text) }
|
69
69
|
it { is_expected.to have_db_column(:path).of_type(:text).with_options(:null => false) }
|
70
70
|
it { is_expected.to have_db_column(:payload).of_type(:text) }
|
71
71
|
it { is_expected.to have_db_column(:pname).of_type(:text) }
|
@@ -85,58 +85,6 @@ RSpec.describe Mdm::Workspace, type: :model do
|
|
85
85
|
end
|
86
86
|
|
87
87
|
context 'validations' do
|
88
|
-
context 'boundary' do
|
89
|
-
let(:boundary) do
|
90
|
-
nil
|
91
|
-
end
|
92
|
-
|
93
|
-
let(:error) do
|
94
|
-
'must be a valid IP range'
|
95
|
-
end
|
96
|
-
|
97
|
-
before(:example) do
|
98
|
-
workspace.boundary = boundary
|
99
|
-
workspace.valid?
|
100
|
-
end
|
101
|
-
|
102
|
-
it 'should validate using #valid_ip_or_range?' do
|
103
|
-
expect(workspace).to receive(:valid_ip_or_range?).with(boundary).and_return(false)
|
104
|
-
|
105
|
-
workspace.valid?
|
106
|
-
end
|
107
|
-
|
108
|
-
context 'with valid IP' do
|
109
|
-
let(:boundary) do
|
110
|
-
'192.168.0.1'
|
111
|
-
end
|
112
|
-
|
113
|
-
it 'should not record an error' do
|
114
|
-
expect(workspace.errors[:boundary]).not_to include(error)
|
115
|
-
end
|
116
|
-
end
|
117
|
-
|
118
|
-
context 'with valid range' do
|
119
|
-
let(:boundary) do
|
120
|
-
'192.168.0.1/24'
|
121
|
-
end
|
122
|
-
|
123
|
-
it 'should not record an error' do
|
124
|
-
expect(workspace.errors[:boundary]).not_to include(error)
|
125
|
-
end
|
126
|
-
end
|
127
|
-
|
128
|
-
context 'with invalid IP or range' do
|
129
|
-
let(:boundary) do
|
130
|
-
'192.168'
|
131
|
-
end
|
132
|
-
|
133
|
-
it 'should record error that boundary must be a valid IP range', :pending => 'https://www.pivotaltracker.com/story/show/43171927' do
|
134
|
-
expect(workspace).not_to be_valid
|
135
|
-
expect(workkspace.errors[:boundary]).to include(error)
|
136
|
-
end
|
137
|
-
end
|
138
|
-
end
|
139
|
-
|
140
88
|
context 'description' do
|
141
89
|
it { is_expected.to validate_length_of(:description).is_at_most(4 * (2 ** 10)) }
|
142
90
|
end
|
@@ -549,5 +497,4 @@ RSpec.describe Mdm::Workspace, type: :model do
|
|
549
497
|
end
|
550
498
|
end
|
551
499
|
end
|
552
|
-
|
553
|
-
end
|
500
|
+
end
|
data/spec/dummy/bin/rake
ADDED
data/spec/dummy/config/boot.rb
CHANGED
@@ -1,10 +1,4 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
# Set up gems listed in the Gemfile.
|
2
|
+
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)
|
3
3
|
|
4
|
-
if File.exist?(
|
5
|
-
ENV['BUNDLE_GEMFILE'] = gemfile
|
6
|
-
require 'bundler'
|
7
|
-
Bundler.setup
|
8
|
-
end
|
9
|
-
|
10
|
-
$:.unshift File.expand_path('../../../../lib', __FILE__)
|
4
|
+
require 'bundler/setup' if File.exist?(ENV['BUNDLE_GEMFILE'])
|
@@ -1,23 +1,37 @@
|
|
1
|
-
|
2
|
-
# Settings specified here will take precedence over those in config/application.rb
|
1
|
+
Rails.application.configure do
|
2
|
+
# Settings specified here will take precedence over those in config/application.rb.
|
3
3
|
|
4
4
|
# In the development environment your application's code is reloaded on
|
5
5
|
# every request. This slows down response time but is perfect for development
|
6
6
|
# since you don't have to restart the web server when you make code changes.
|
7
7
|
config.cache_classes = false
|
8
8
|
|
9
|
-
#
|
9
|
+
# Do not eager load code on boot.
|
10
|
+
config.eager_load = false
|
11
|
+
|
12
|
+
# Show full error reports and disable caching.
|
10
13
|
config.consider_all_requests_local = true
|
11
14
|
config.action_controller.perform_caching = false
|
12
15
|
|
13
|
-
# Don't care if the mailer can't send
|
16
|
+
# Don't care if the mailer can't send.
|
14
17
|
config.action_mailer.raise_delivery_errors = false
|
15
18
|
|
16
|
-
#
|
17
|
-
config.
|
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
|
18
24
|
|
19
|
-
#
|
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.
|
20
28
|
config.assets.debug = true
|
21
29
|
|
22
|
-
|
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
|
23
37
|
end
|
@@ -1,66 +1,78 @@
|
|
1
|
-
|
2
|
-
# Settings specified here will take precedence over those in config/application.rb
|
1
|
+
Rails.application.configure do
|
2
|
+
# Settings specified here will take precedence over those in config/application.rb.
|
3
3
|
|
4
|
-
# Code is not reloaded between requests
|
4
|
+
# Code is not reloaded between requests.
|
5
5
|
config.cache_classes = true
|
6
6
|
|
7
|
-
#
|
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.
|
8
14
|
config.consider_all_requests_local = false
|
9
15
|
config.action_controller.perform_caching = true
|
10
16
|
|
11
|
-
#
|
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).
|
12
23
|
config.serve_static_assets = false
|
13
24
|
|
14
|
-
# Compress JavaScripts and CSS
|
15
|
-
config.assets.
|
25
|
+
# Compress JavaScripts and CSS.
|
26
|
+
config.assets.js_compressor = :uglifier
|
27
|
+
# config.assets.css_compressor = :sass
|
16
28
|
|
17
|
-
#
|
29
|
+
# Do not fallback to assets pipeline if a precompiled asset is missed.
|
18
30
|
config.assets.compile = false
|
19
31
|
|
20
|
-
# Generate digests for assets URLs
|
32
|
+
# Generate digests for assets URLs.
|
21
33
|
config.assets.digest = true
|
22
34
|
|
23
|
-
#
|
24
|
-
# config.assets.manifest = YOUR_PATH
|
35
|
+
# `config.assets.precompile` and `config.assets.version` have moved to config/initializers/assets.rb
|
25
36
|
|
26
|
-
# Specifies the header that your server uses for sending files
|
37
|
+
# Specifies the header that your server uses for sending files.
|
27
38
|
# config.action_dispatch.x_sendfile_header = "X-Sendfile" # for apache
|
28
39
|
# config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for nginx
|
29
40
|
|
30
41
|
# Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies.
|
31
42
|
# config.force_ssl = true
|
32
43
|
|
33
|
-
#
|
34
|
-
|
44
|
+
# Set to :debug to see everything in the log.
|
45
|
+
config.log_level = :info
|
35
46
|
|
36
|
-
# Prepend all log lines with the following tags
|
47
|
+
# Prepend all log lines with the following tags.
|
37
48
|
# config.log_tags = [ :subdomain, :uuid ]
|
38
49
|
|
39
|
-
# Use a different logger for distributed setups
|
50
|
+
# Use a different logger for distributed setups.
|
40
51
|
# config.logger = ActiveSupport::TaggedLogging.new(SyslogLogger.new)
|
41
52
|
|
42
|
-
# Use a different cache store in production
|
53
|
+
# Use a different cache store in production.
|
43
54
|
# config.cache_store = :mem_cache_store
|
44
55
|
|
45
|
-
# Enable serving of images, stylesheets, and JavaScripts from an asset server
|
56
|
+
# Enable serving of images, stylesheets, and JavaScripts from an asset server.
|
46
57
|
# config.action_controller.asset_host = "http://assets.example.com"
|
47
58
|
|
48
|
-
#
|
49
|
-
#
|
50
|
-
|
51
|
-
# Disable delivery errors, bad email addresses will be ignored
|
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.
|
52
61
|
# config.action_mailer.raise_delivery_errors = false
|
53
62
|
|
54
|
-
# Enable threaded mode
|
55
|
-
# config.threadsafe!
|
56
|
-
|
57
63
|
# Enable locale fallbacks for I18n (makes lookups for any locale fall back to
|
58
|
-
# the I18n.default_locale when a translation
|
64
|
+
# the I18n.default_locale when a translation cannot be found).
|
59
65
|
config.i18n.fallbacks = true
|
60
66
|
|
61
|
-
#
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
config.
|
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
|
66
78
|
end
|