sequential 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (61) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +18 -0
  3. data/.travis.yml +5 -0
  4. data/Gemfile +4 -0
  5. data/LICENSE.md +20 -0
  6. data/LICENSE.txt +22 -0
  7. data/README.md +48 -0
  8. data/Rakefile +15 -0
  9. data/lib/rails/generators/sequential/setup/setup_generator.rb +19 -0
  10. data/lib/rails/generators/sequential/setup/templates/migration.rb +12 -0
  11. data/lib/sequential/generator.rb +43 -0
  12. data/lib/sequential/sequence.rb +5 -0
  13. data/lib/sequential/sequential_include.rb +52 -0
  14. data/lib/sequential/version.rb +3 -0
  15. data/lib/sequential.rb +6 -0
  16. data/sequential.gemspec +28 -0
  17. data/test/dummy/README.rdoc +28 -0
  18. data/test/dummy/Rakefile +6 -0
  19. data/test/dummy/app/models/comment.rb +4 -0
  20. data/test/dummy/app/models/invoice.rb +5 -0
  21. data/test/dummy/app/models/post.rb +5 -0
  22. data/test/dummy/app/models/product.rb +3 -0
  23. data/test/dummy/app/models/story.rb +3 -0
  24. data/test/dummy/bin/bundle +3 -0
  25. data/test/dummy/bin/rails +4 -0
  26. data/test/dummy/bin/rake +4 -0
  27. data/test/dummy/config/application.rb +26 -0
  28. data/test/dummy/config/boot.rb +8 -0
  29. data/test/dummy/config/database.yml +25 -0
  30. data/test/dummy/config/environment.rb +5 -0
  31. data/test/dummy/config/environments/development.rb +29 -0
  32. data/test/dummy/config/environments/production.rb +80 -0
  33. data/test/dummy/config/environments/test.rb +36 -0
  34. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  35. data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  36. data/test/dummy/config/initializers/inflections.rb +16 -0
  37. data/test/dummy/config/initializers/mime_types.rb +5 -0
  38. data/test/dummy/config/initializers/secret_token.rb +12 -0
  39. data/test/dummy/config/initializers/session_store.rb +3 -0
  40. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  41. data/test/dummy/config/locales/en.yml +23 -0
  42. data/test/dummy/config/routes.rb +56 -0
  43. data/test/dummy/config.ru +4 -0
  44. data/test/dummy/db/migrate/20131104000033_create_posts.rb +8 -0
  45. data/test/dummy/db/migrate/20131104000212_create_invoices.rb +8 -0
  46. data/test/dummy/db/migrate/20131104003146_create_sequential.rb +12 -0
  47. data/test/dummy/db/migrate/20131104003505_create_products.rb +10 -0
  48. data/test/dummy/db/migrate/20131104015719_create_stories.rb +10 -0
  49. data/test/dummy/db/migrate/20131104020142_create_comments.rb +12 -0
  50. data/test/dummy/db/seeds.rb +7 -0
  51. data/test/dummy/lib/assets/.keep +0 -0
  52. data/test/dummy/lib/tasks/.keep +0 -0
  53. data/test/dummy/log/.keep +0 -0
  54. data/test/dummy/public/404.html +58 -0
  55. data/test/dummy/public/422.html +58 -0
  56. data/test/dummy/public/500.html +57 -0
  57. data/test/dummy/public/favicon.ico +0 -0
  58. data/test/dummy/public/robots.txt +5 -0
  59. data/test/sequential_include_test.rb +77 -0
  60. data/test/test_helper.rb +13 -0
  61. metadata +206 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 2609635efbc3447c71e04d663d263f6359cf21ac
4
+ data.tar.gz: 4f44c9a6b326c602bf1d7e99b11738a74c98f1dc
5
+ SHA512:
6
+ metadata.gz: 18e757fc87760ab370031dc490729c24e352fb5fa22f16476c9cd7d8b3132f66202a07292d90758674f42157158ff6ef2bf1ac1506f6e2b75f07ce1a29fff3a6
7
+ data.tar.gz: c4d5d2045688e0ae4207b610eab9fd3d5a8ced3c04701dc660306b2d70ba0c15483a35415950a6ea67602bce9800b4744cae125c0515df3402384809852f071f
data/.gitignore ADDED
@@ -0,0 +1,18 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ test/dummy/db/*.sqlite3
18
+ tmp
data/.travis.yml ADDED
@@ -0,0 +1,5 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.9.3
4
+ - 2.0.0
5
+ - ruby-head
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in sequential_id.gemspec
4
+ gemspec
data/LICENSE.md ADDED
@@ -0,0 +1,20 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) [year] [fullname]
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy of
6
+ this software and associated documentation files (the "Software"), to deal in
7
+ the Software without restriction, including without limitation the rights to
8
+ use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
9
+ the Software, and to permit persons to whom the Software is furnished to do so,
10
+ subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
17
+ FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
18
+ COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
19
+ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
20
+ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2013 Austin Lin
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,48 @@
1
+ # Sequential
2
+ [![Build Status](https://travis-ci.org/austinylin/sequential.png?branch=master)](https://travis-ci.org/austinylin/sequential)
3
+
4
+ Generates scoped, threadsafe sequences for ActiveRecord models.
5
+
6
+ Based on [Sequenced](https://github.com/djreimer/sequenced) by
7
+ [Derrick Reimer](https://github.com/djreimer)
8
+
9
+ ## Installation
10
+
11
+ Add this line to your application's Gemfile:
12
+
13
+ gem 'sequential'
14
+
15
+ And then execute:
16
+
17
+ $ bundle
18
+
19
+ Or install it yourself as:
20
+
21
+ $ gem install sequential
22
+
23
+ ## Usage
24
+
25
+ Setup the database table:
26
+
27
+ rails g sequential:setup
28
+
29
+ Add a column to your model to hold the sequence (by default sequential_id)
30
+ , in a migration:
31
+
32
+ add_column :model_name, :sequential_id, :integer
33
+
34
+ Then run the migrations:
35
+
36
+ rake db:migrate
37
+
38
+ Now add the following to your model:
39
+
40
+ sequential scope: :name_of_attribute_to_scope_on
41
+
42
+ ## Contributing
43
+
44
+ 1. Fork it
45
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
46
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
47
+ 4. Push to the branch (`git push origin my-new-feature`)
48
+ 5. Create new Pull Request
data/Rakefile ADDED
@@ -0,0 +1,15 @@
1
+ require "bundler/gem_tasks"
2
+
3
+ Bundler::GemHelper.install_tasks
4
+
5
+ require 'rake/testtask'
6
+
7
+ Rake::TestTask.new(:test) do |t|
8
+ t.libs << 'lib'
9
+ t.libs << 'test'
10
+ t.pattern = 'test/**/*_test.rb'
11
+ t.verbose = false
12
+ end
13
+
14
+
15
+ task :default => :test
@@ -0,0 +1,19 @@
1
+ require 'rails/generators/active_record'
2
+
3
+ module Sequential
4
+ module Generators
5
+ class SetupGenerator < ActiveRecord::Generators::Base
6
+
7
+ # Ignore the required name param
8
+ argument :name, type: :string, default: 'random_name'
9
+
10
+ desc 'Creates a migration to create the sequential table'
11
+
12
+ source_root File.expand_path("../templates", __FILE__)
13
+
14
+ def create_migration
15
+ migration_template "migration.rb", "db/migrate/create_sequential.rb"
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,12 @@
1
+ class CreateSequential < ActiveRecord::Migration
2
+ def change
3
+ create_table(:sequential) do |t|
4
+ t.string :model
5
+ t.string :column
6
+ t.string :scope
7
+ t.integer :scope_value
8
+ t.integer :value
9
+ t.timestamps
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,43 @@
1
+ module Sequential
2
+ class Generator
3
+ attr_reader :record, :scope, :column, :start_at, :skip
4
+
5
+ def initialize(record, options = {})
6
+ @record = record
7
+ @scope = options[:scope]
8
+ @column = (options[:column] || :sequential_id).to_sym
9
+ @start_at = options[:start_at] || 1
10
+ @skip = options[:skip]
11
+ end
12
+
13
+ def set
14
+ unless id_set? || skip?
15
+ where_opts = {
16
+ model: record.class.name,
17
+ column: column
18
+ }
19
+
20
+ where_opts.merge!( scope: scope.to_s,
21
+ scope_value: record.send(scope.to_sym),
22
+ ) if scope
23
+
24
+ sequence = Sequential::Sequence.where(where_opts).
25
+ first_or_create(value: start_at - 1)
26
+
27
+ sequence.with_lock do
28
+ sequence.value += 1
29
+ record.send(:"#{column}=", sequence.value)
30
+ sequence.save
31
+ end
32
+ end
33
+ end
34
+
35
+ def id_set?
36
+ !record.send(column).nil?
37
+ end
38
+
39
+ def skip?
40
+ skip && skip.call(record)
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,5 @@
1
+ module Sequential
2
+ class Sequence < ActiveRecord::Base
3
+ self.table_name = 'sequential'
4
+ end
5
+ end
@@ -0,0 +1,52 @@
1
+ require 'active_support/core_ext/hash/slice'
2
+ require 'active_support/core_ext/class/attribute_accessors'
3
+
4
+ module Sequential
5
+ module SequentialInclude
6
+ def self.included(base)
7
+ base.extend ClassMethods
8
+ end
9
+
10
+ module ClassMethods
11
+ # Public: Defines ActiveRecord callbacks to set a sequential ID scoped
12
+ # on a specific class.
13
+ #
14
+ # options - The Hash of options for configuration:
15
+ # :scope - The Symbol representing the columm on which the
16
+ # sequence should be scoped (default: nil)
17
+ # :column - The Symbol representing the column that stores the
18
+ # sequence (default: :sequential_id)
19
+ # :start_at - The Integer value at which the sequence should
20
+ # start (default: 1)
21
+ # :skip - Skips the sequence generation when the lambda
22
+ # expression evaluates to nil. Gets passed the
23
+ # model object
24
+ #
25
+ # Examples
26
+ #
27
+ # class Answer < ActiveRecord::Base
28
+ # belongs_to :question
29
+ # sequential scope: :question_id
30
+ # end
31
+ #
32
+ # Returns nothing.
33
+ def sequential(options = {})
34
+ cattr_accessor :sequence_options
35
+
36
+ (self.sequence_options ||= []) << options
37
+
38
+ before_create :set_sequential_values
39
+
40
+ include Sequential::SequentialInclude::InstanceMethods
41
+ end
42
+ end
43
+
44
+ module InstanceMethods
45
+ def set_sequential_values
46
+ self.sequence_options.each do |seq_opts|
47
+ Sequential::Generator.new(self, seq_opts).set
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,3 @@
1
+ module Sequential
2
+ VERSION = "0.0.1"
3
+ end
data/lib/sequential.rb ADDED
@@ -0,0 +1,6 @@
1
+ require 'sequential/version'
2
+ require 'sequential/generator'
3
+ require 'sequential/sequential_include'
4
+ require 'sequential/sequence'
5
+
6
+ ActiveRecord::Base.send(:include, Sequential::SequentialInclude)
@@ -0,0 +1,28 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'sequential/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "sequential"
8
+ spec.version = Sequential::VERSION
9
+ spec.authors = ["Austin Lin"]
10
+ spec.email = ["austin@austinylin.com"]
11
+ spec.description = %q{Generates scoped, threadsafe sequences for
12
+ ActiveRecord models}
13
+ spec.summary = %q{Sequential enables the use of scoped, threadsafe
14
+ sequences for ActiveRecord models using a
15
+ seperate sequence table and row-level locking}
16
+ spec.homepage = ""
17
+ spec.license = "MIT"
18
+
19
+ spec.files = `git ls-files`.split($/)
20
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
21
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
22
+ spec.require_paths = ["lib"]
23
+
24
+ spec.add_development_dependency "bundler", "~> 1.3"
25
+ spec.add_development_dependency "rake"
26
+ spec.add_development_dependency "rails", ">= 4.0"
27
+ spec.add_development_dependency "sqlite3"
28
+ end
@@ -0,0 +1,28 @@
1
+ == README
2
+
3
+ This README would normally document whatever steps are necessary to get the
4
+ application up and running.
5
+
6
+ Things you may want to cover:
7
+
8
+ * Ruby version
9
+
10
+ * System dependencies
11
+
12
+ * Configuration
13
+
14
+ * Database creation
15
+
16
+ * Database initialization
17
+
18
+ * How to run the test suite
19
+
20
+ * Services (job queues, cache servers, search engines, etc.)
21
+
22
+ * Deployment instructions
23
+
24
+ * ...
25
+
26
+
27
+ Please feel free to use a different markup language if you do not plan to run
28
+ <tt>rake doc:app</tt>.
@@ -0,0 +1,6 @@
1
+ # Add your own tasks in files placed in lib/tasks ending in .rake,
2
+ # for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
3
+
4
+ require File.expand_path('../config/application', __FILE__)
5
+
6
+ Dummy::Application.load_tasks
@@ -0,0 +1,4 @@
1
+ class Comment < ActiveRecord::Base
2
+ sequential column: :absolute_number
3
+ sequential scope: :post_id
4
+ end
@@ -0,0 +1,5 @@
1
+ class Invoice < ActiveRecord::Base
2
+
3
+ sequential scope: :client_id, start_at: 1000
4
+
5
+ end
@@ -0,0 +1,5 @@
1
+ class Post < ActiveRecord::Base
2
+
3
+ sequential scope: :author_id
4
+
5
+ end
@@ -0,0 +1,3 @@
1
+ class Product < ActiveRecord::Base
2
+ sequential scope: :category_id, skip: lambda { |p| p.price == -1 }
3
+ end
@@ -0,0 +1,3 @@
1
+ class Story < ActiveRecord::Base
2
+ sequential column: :story_number
3
+ end
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)
3
+ load Gem.bin_path('bundler', 'bundle')
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env ruby
2
+ APP_PATH = File.expand_path('../../config/application', __FILE__)
3
+ require_relative '../config/boot'
4
+ require 'rails/commands'
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env ruby
2
+ require_relative '../config/boot'
3
+ require 'rake'
4
+ Rake.application.run
@@ -0,0 +1,26 @@
1
+ require File.expand_path('../boot', __FILE__)
2
+
3
+ require 'rails/all'
4
+
5
+ Bundler.require
6
+ require 'sequential'
7
+
8
+ # Require the gems listed in Gemfile, including any gems
9
+ # you've limited to :test, :development, or :production.
10
+ #Bundler.require(:default, Rails.env)
11
+
12
+ module Dummy
13
+ class Application < Rails::Application
14
+ # Settings in config/environments/* take precedence over those specified here.
15
+ # Application configuration should go into files in config/initializers
16
+ # -- all .rb files in that directory are automatically loaded.
17
+
18
+ # Set Time.zone default to the specified zone and make Active Record auto-convert to this zone.
19
+ # Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC.
20
+ # config.time_zone = 'Central Time (US & Canada)'
21
+
22
+ # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
23
+ # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]
24
+ # config.i18n.default_locale = :de
25
+ end
26
+ end
@@ -0,0 +1,8 @@
1
+ require 'rubygems'
2
+ gemfile = File.expand_path('../../../../Gemfile', __FILE__)
3
+
4
+ if File.exist?(gemfile)
5
+ ENV['BUNDLE_GEMFILE'] = gemfile
6
+ require 'bundler'
7
+ Bundler.setup
8
+ 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
+ development:
7
+ adapter: sqlite3
8
+ database: db/development.sqlite3
9
+ pool: 5
10
+ timeout: 5000
11
+
12
+ # Warning: The database defined as "test" will be erased and
13
+ # re-generated from your development database when you run "rake".
14
+ # Do not set this db to the same as development or production.
15
+ test:
16
+ adapter: sqlite3
17
+ database: db/test.sqlite3
18
+ pool: 5
19
+ timeout: 5000
20
+
21
+ production:
22
+ adapter: sqlite3
23
+ database: db/production.sqlite3
24
+ pool: 5
25
+ timeout: 5000
@@ -0,0 +1,5 @@
1
+ # Load the Rails application.
2
+ require File.expand_path('../application', __FILE__)
3
+
4
+ # Initialize the Rails application.
5
+ Dummy::Application.initialize!
@@ -0,0 +1,29 @@
1
+ Dummy::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
+ end
@@ -0,0 +1,80 @@
1
+ Dummy::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 thread 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
+ # Version of your assets, change this if you want to expire all your assets.
36
+ config.assets.version = '1.0'
37
+
38
+ # Specifies the header that your server uses for sending files.
39
+ # config.action_dispatch.x_sendfile_header = "X-Sendfile" # for apache
40
+ # config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for nginx
41
+
42
+ # Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies.
43
+ # config.force_ssl = true
44
+
45
+ # Set to :debug to see everything in the log.
46
+ config.log_level = :info
47
+
48
+ # Prepend all log lines with the following tags.
49
+ # config.log_tags = [ :subdomain, :uuid ]
50
+
51
+ # Use a different logger for distributed setups.
52
+ # config.logger = ActiveSupport::TaggedLogging.new(SyslogLogger.new)
53
+
54
+ # Use a different cache store in production.
55
+ # config.cache_store = :mem_cache_store
56
+
57
+ # Enable serving of images, stylesheets, and JavaScripts from an asset server.
58
+ # config.action_controller.asset_host = "http://assets.example.com"
59
+
60
+ # Precompile additional assets.
61
+ # application.js, application.css, and all non-JS/CSS in app/assets folder are already added.
62
+ # config.assets.precompile += %w( search.js )
63
+
64
+ # Ignore bad email addresses and do not raise email delivery errors.
65
+ # Set this to true and configure the email server for immediate delivery to raise delivery errors.
66
+ # config.action_mailer.raise_delivery_errors = false
67
+
68
+ # Enable locale fallbacks for I18n (makes lookups for any locale fall back to
69
+ # the I18n.default_locale when a translation can not be found).
70
+ config.i18n.fallbacks = true
71
+
72
+ # Send deprecation notices to registered listeners.
73
+ config.active_support.deprecation = :notify
74
+
75
+ # Disable automatic flushing of the log to improve performance.
76
+ # config.autoflush_log = false
77
+
78
+ # Use default logging formatter so that PID and timestamp are not suppressed.
79
+ config.log_formatter = ::Logger::Formatter.new
80
+ end
@@ -0,0 +1,36 @@
1
+ Dummy::Application.configure do
2
+ # Settings specified here will take precedence over those in config/application.rb.
3
+
4
+ # The test environment is used exclusively to run your application's
5
+ # test suite. You never need to work with it otherwise. Remember that
6
+ # your test database is "scratch space" for the test suite and is wiped
7
+ # and recreated between test runs. Don't rely on the data there!
8
+ config.cache_classes = true
9
+
10
+ # Do not eager load code on boot. This avoids loading your whole application
11
+ # just for the purpose of running a single test. If you are using a tool that
12
+ # preloads Rails for running tests, you may have to set it to true.
13
+ config.eager_load = false
14
+
15
+ # Configure static asset server for tests with Cache-Control for performance.
16
+ config.serve_static_assets = true
17
+ config.static_cache_control = "public, max-age=3600"
18
+
19
+ # Show full error reports and disable caching.
20
+ config.consider_all_requests_local = true
21
+ config.action_controller.perform_caching = false
22
+
23
+ # Raise exceptions instead of rendering exception templates.
24
+ config.action_dispatch.show_exceptions = false
25
+
26
+ # Disable request forgery protection in test environment.
27
+ config.action_controller.allow_forgery_protection = false
28
+
29
+ # Tell Action Mailer not to deliver emails to the real world.
30
+ # The :test delivery method accumulates sent emails in the
31
+ # ActionMailer::Base.deliveries array.
32
+ config.action_mailer.delivery_method = :test
33
+
34
+ # Print deprecation notices to the stderr.
35
+ config.active_support.deprecation = :stderr
36
+ end
@@ -0,0 +1,7 @@
1
+ # Be sure to restart your server when you modify this file.
2
+
3
+ # You can add backtrace silencers for libraries that you're using but don't wish to see in your backtraces.
4
+ # Rails.backtrace_cleaner.add_silencer { |line| line =~ /my_noisy_library/ }
5
+
6
+ # You can also remove all the silencers if you're trying to debug a problem that might stem from framework code.
7
+ # Rails.backtrace_cleaner.remove_silencers!
@@ -0,0 +1,4 @@
1
+ # Be sure to restart your server when you modify this file.
2
+
3
+ # Configure sensitive parameters which will be filtered from the log file.
4
+ Rails.application.config.filter_parameters += [:password]
@@ -0,0 +1,16 @@
1
+ # Be sure to restart your server when you modify this file.
2
+
3
+ # Add new inflection rules using the following format. Inflections
4
+ # are locale specific, and you may define rules for as many different
5
+ # locales as you wish. All of these examples are active by default:
6
+ # ActiveSupport::Inflector.inflections(:en) do |inflect|
7
+ # inflect.plural /^(ox)$/i, '\1en'
8
+ # inflect.singular /^(ox)en/i, '\1'
9
+ # inflect.irregular 'person', 'people'
10
+ # inflect.uncountable %w( fish sheep )
11
+ # end
12
+
13
+ # These inflection rules are supported but not enabled by default:
14
+ # ActiveSupport::Inflector.inflections(:en) do |inflect|
15
+ # inflect.acronym 'RESTful'
16
+ # end