lib/keycard/railtie.rb in keycard-0.1.2 vs lib/keycard/railtie.rb in keycard-0.2.0
- old
+ new
@@ -1,108 +1,106 @@
# frozen_string_literal: true
-module Keycard
- # Railtie to hook Keycard into Rails applications.
- #
- # This does three things at present:
- #
- # 1. Loads our rake tasks, so you can run keycard:migrate from the app.
- # 2. Pulls the Rails database information off of the ActiveRecord
- # connection and puts it on Keycard::DB.config before any application
- # initializers are run.
- # 3. Sets up the Keycard database connection after application
- # initializers have run, if it has not already been done and we are not
- # running as a Rake task. This condition is key because when we are in
- # rails server or console, we want to initialize!, but when we are in
- # a rake task to update the database, we have to let it connect, but
- # not initialize.
- class Railtie < Rails::Railtie
- railtie_name :keycard
+# Railtie to hook Keycard into Rails applications.
+#
+# This does three things at present:
+#
+# 1. Loads our rake tasks, so you can run keycard:migrate from the app.
+# 2. Pulls the Rails database information off of the ActiveRecord
+# connection and puts it on Keycard::DB.config before any application
+# initializers are run.
+# 3. Sets up the Keycard database connection after application
+# initializers have run, if it has not already been done and we are not
+# running as a Rake task. This condition is key because when we are in
+# rails server or console, we want to initialize!, but when we are in
+# a rake task to update the database, we have to let it connect, but
+# not initialize.
+class Keycard::Railtie < Rails::Railtie
+ railtie_name :keycard
- class << self
- # Register a callback to run before anything in 'config/initializers' runs.
- # The block will get a reference to Keycard::DB.config as its only parameter.
- def before_initializers(&block)
- before_blocks << block
- end
+ class << self
+ # Register a callback to run before anything in 'config/initializers' runs.
+ # The block will get a reference to Keycard::DB.config as its only parameter.
+ def before_initializers(&block)
+ before_blocks << block
+ end
- # Register a callback to run after anything in 'config/initializers' runs.
- # The block will get a reference to Keycard::DB.config as its only parameter.
- # Keycard::DB.initialize! will not have been automatically called at this
- # point, so this is an opportunity to do so if an initializer has not.
- def after_initializers(&block)
- after_blocks << block
- end
+ # Register a callback to run after anything in 'config/initializers' runs.
+ # The block will get a reference to Keycard::DB.config as its only parameter.
+ # Keycard::DB.initialize! will not have been automatically called at this
+ # point, so this is an opportunity to do so if an initializer has not.
+ def after_initializers(&block)
+ after_blocks << block
+ end
- # Register a callback to run when Keycard is ready and fully initialized.
- # This will happen once in production, and on each request in development.
- # If you need to do something once in development, you can choose between
- # keeping a flag or using the after_initializers.
- def when_keycard_is_ready(&block)
- ready_blocks << block
- end
+ # Register a callback to run when Keycard is ready and fully initialized.
+ # This will happen once in production, and on each request in development.
+ # If you need to do something once in development, you can choose between
+ # keeping a flag or using the after_initializers.
+ def when_keycard_is_ready(&block)
+ ready_blocks << block
+ end
- def before_blocks
- @before ||= []
- end
+ def before_blocks
+ @before_blocks ||= []
+ end
- def after_blocks
- @after ||= []
- end
+ def after_blocks
+ @after_blocks ||= []
+ end
- def ready_blocks
- @ready ||= []
- end
+ def ready_blocks
+ @ready_blocks ||= []
+ end
- def under_rake!
- @rake = true
- end
+ def under_rake!
+ @under_rake = true
+ end
- def under_rake?
- @rake ||= false
- end
+ def under_rake?
+ @under_rake ||= false
end
+ end
- # This runs before anything in 'config/initializers' runs.
- initializer "keycard.before_initializers", before: :load_config_initializers do
- config = Keycard::DB.config
- unless config.url
- case Rails.env
- when "development"
- config[:opts] = { adapter: 'sqlite', database: "db/keycard_development.sqlite3" }
- when "test"
- config[:opts] = { adapter: 'sqlite' }
- else
- raise "Keycard::DB.config must be configured"
- end
+ # This runs before anything in 'config/initializers' runs.
+ initializer "keycard.before_initializers", before: :load_config_initializers do
+ config = Keycard::DB.config
+ unless config.url
+ case Rails.env
+ when "development"
+ config[:opts] = { adapter: 'sqlite', database: "db/keycard_development.sqlite3" }
+ when "test"
+ config[:opts] = { adapter: 'sqlite' }
+ else
+ raise "Keycard::DB.config must be configured"
end
+ end
- Railtie.before_blocks.each do |block|
- block.call(config.to_h)
- end
+ Railtie.before_blocks.each do |block|
+ block.call(config.to_h)
end
+ end
- # This runs after everything in 'config/initializers' runs.
- initializer "keycard.after_initializers", after: :load_config_initializers do
- config = Keycard::DB.config
- Railtie.after_blocks.each do |block|
- block.call(config.to_h)
- end
+ # This runs after everything in 'config/initializers' runs.
+ initializer "keycard.after_initializers", after: :load_config_initializers do
+ config = Keycard::DB.config
+ Railtie.after_blocks.each do |block|
+ block.call(config.to_h)
+ end
- Keycard::DB.initialize! unless Railtie.under_rake?
+ Keycard::DB.initialize! unless Railtie.under_rake?
- Railtie.ready_blocks.each do |block|
- block.call(Keycard::DB.db)
- end
+ Railtie.ready_blocks.each do |block|
+ block.call(Keycard::DB.db)
end
+ end
- def rake_files
- base = Pathname(__dir__) + '../tasks/'
- [base + 'migrate.rake']
- end
+ def rake_files
+ base = Pathname(__dir__) + '../tasks/'
+ [base + 'migrate.rake']
+ end
- rake_tasks do
- Railtie.under_rake!
- rake_files.each { |file| load file }
- end
+ rake_tasks do
+ Railtie.under_rake!
+ rake_files.each { |file| load file }
end
end