class Railroader::Rails2ConfigProcessor
Processes configuration. Results are put in tracker.config.
Configuration of Rails via Rails::Initializer are stored in tracker.config.rails. For example:
Rails::Initializer.run |config| config.action_controller.session_store = :cookie_store end
will be stored in
tracker.config[:rails][:action_controller][:session_store]
Values for tracker.config.rails will still be Sexps.
Constants
- RAILS_CONFIG
Replace block variable in
Rails::Initializer.run |config|
with this value so we can keep track of it.
Public Class Methods
new(*args)
click to toggle source
Calls superclass method
Railroader::BasicProcessor::new
# File lib/railroader/processors/lib/rails2_config_processor.rb, line 25 def initialize *args super end
Public Instance Methods
get_rails_config(exp)
click to toggle source
Returns an array of symbols for each 'level' in the config
config.action_controller.session_store = :cookie
becomes
[:action_controller, :session_store]
# File lib/railroader/processors/lib/rails2_config_processor.rb, line 107 def get_rails_config exp if node_type? exp, :attrasgn attribute = exp.method.to_s[0..-2].to_sym get_rails_config(exp.target) << attribute elsif call? exp if exp.target == RAILS_CONFIG [exp.method] else get_rails_config(exp.target) << exp.method end else raise "WHAT" end end
include_rails_config?(exp)
click to toggle source
Check if an expression includes a call to set Rails config
# File lib/railroader/processors/lib/rails2_config_processor.rb, line 85 def include_rails_config? exp target = exp.target if call? target if target.target == RAILS_CONFIG true else include_rails_config? target end elsif target == RAILS_CONFIG true else false end end
process_attrasgn(exp)
click to toggle source
Look for configuration settings
# File lib/railroader/processors/lib/rails2_config_processor.rb, line 50 def process_attrasgn exp if exp.target == RAILS_CONFIG # Get rid of '=' at end attribute = exp.method.to_s[0..-2].to_sym if exp.args.length > 1 # Multiple arguments?...not sure if this will ever happen @tracker.config.rails[attribute] = exp.args else @tracker.config.rails[attribute] = exp.first_arg end elsif include_rails_config? exp options = get_rails_config exp level = @tracker.config.rails options[0..-2].each do |o| level[o] ||= {} level = level[o] end level[options.last] = exp.first_arg end exp end
process_call(exp)
click to toggle source
Check if config is set to use Erubis
# File lib/railroader/processors/lib/rails2_config_processor.rb, line 37 def process_call exp target = exp.target target = process target if sexp? target if exp.method == :gem and exp.first_arg.value == "erubis" Railroader.notify "[Notice] Using Erubis for ERB templates" @tracker.config.erubis = true end exp end
process_cdecl(exp)
click to toggle source
Check for Rails version
# File lib/railroader/processors/lib/rails2_config_processor.rb, line 75 def process_cdecl exp # Set Rails version required if exp.lhs == :RAILS_GEM_VERSION @tracker.config.rails_version = exp.rhs.value end exp end
process_config(src, file_name)
click to toggle source
Use this method to process configuration file
# File lib/railroader/processors/lib/rails2_config_processor.rb, line 30 def process_config src, file_name @file_name = file_name res = Railroader::ConfigAliasProcessor.new.process_safely(src, nil, file_name) process res end