Module: ADSL::Extract::Rails::RailsSpecialGemInstrumentation
- Included in:
- RailsExtractor
- Defined in:
- lib/adsl/extract/rails/rails_special_gem_instrumentation.rb
Instance Method Summary collapse
- #instrument_gem_authlogic(controller_class, action) ⇒ Object
- #instrument_gem_cancan(controller_class, action) ⇒ Object
- #instrument_gem_devise(controller_class, action) ⇒ Object
- #instrument_gem_ransack(controller_class, action) ⇒ Object
- #instrument_gems(controller_class, action) ⇒ Object
Instance Method Details
#instrument_gem_authlogic(controller_class, action) ⇒ Object
79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
# File 'lib/adsl/extract/rails/rails_special_gem_instrumentation.rb', line 79 def instrument_gem_authlogic(controller_class, action) return unless Object.lookup_const('Authlogic') # only instrument this if there is a class called User; assume that a user is the logged in entity return unless Object.lookup_const('User') Object.lookup_const('Authlogic::Session::Base').class_exec do def self.find(*args) ADSL::Extract::Rails::PartiallyUnknownHash.new( :record => User.find ) end end end |
#instrument_gem_cancan(controller_class, action) ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/adsl/extract/rails/rails_special_gem_instrumentation.rb', line 8 def instrument_gem_cancan(controller_class, action) return unless klass = Object.lookup_const('CanCan::ControllerResource') model_class_name = controller_class.controller_name.singularize.camelize klass.class_eval " def name_from_controller\n \"\#{ model_class_name.underscore.singularize }\"\n end\n\n def namespace\n [\#{ model_class_name.split('::')[0..-2].map{ |a| \"'\#{a}'\" }.join(', ') }]\n end\n\n def authorize_resource; end\n\n def find_resource\n \#{ model_class_name }.find\n end\n\n def build_resource\n \#{ model_class_name }.new\n end\n\n def load_collection\n \#{ model_class_name }.where\n end\n\n def load_resource\n unless skip?(:load)\n var_name, objset = if load_instance?\n [instance_name.to_s, load_resource_instance]\n else\n [instance_name.to_s.pluralize, load_collection]\n end\n ins_explore_all 'load_resource' do\n ins_stmt(ADSL::Parser::ASTAssignment.new(\n :var_name => ADSL::Parser::ASTIdent.new(:text => \"at__\\\#{var_name}\"),\n :objset => objset.adsl_ast\n ))\n nil\n end\n @controller.instance_variable_set(\n \"@\\\#{ var_name }\",\n \#{ model_class_name }.new(:adsl_ast => ADSL::Parser::ASTVariable.new(\n :var_name => ADSL::Parser::ASTIdent.new(:text => \"at__\\\#{var_name}\")\n ))\n )\n end\n end\n ruby\n\n controller_class.class_exec do\n def authorize!(*args); end\n end\n\nend\n", __FILE__, __LINE__ |
#instrument_gem_devise(controller_class, action) ⇒ Object
94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 |
# File 'lib/adsl/extract/rails/rails_special_gem_instrumentation.rb', line 94 def instrument_gem_devise(controller_class, action) return unless Object.lookup_const('Devise') Devise.mappings.values.each do |mapping| role = mapping.singular role_class = mapping.class_name controller_class.class_eval " def authenticate_\#{role}!(*args); end\n def \#{role}_signed_in?(*args); true; end\n def current_\#{role}(*args); \#{role_class}.find(-1); end\n def \#{role}_session(*args); ::ADSL::Extract::MetaUnknown.new; end\n def only_render_implemented_actions(*args); end\n ruby\n end\nend\n" |
#instrument_gem_ransack(controller_class, action) ⇒ Object
65 66 67 68 69 70 71 72 73 74 75 76 77 |
# File 'lib/adsl/extract/rails/rails_special_gem_instrumentation.rb', line 65 def instrument_gem_ransack(controller_class, action) if Object.lookup_const('RansackUI') Object.lookup_const('RansackUI::ControllerHelpers').class_exec do def load_ransack_search(*args); end end end if Object.lookup_const('Ransack') ActiveRecord::Base.class_exec do def search(*args); where; end end end end |
#instrument_gems(controller_class, action) ⇒ Object
110 111 112 113 114 115 |
# File 'lib/adsl/extract/rails/rails_special_gem_instrumentation.rb', line 110 def instrument_gems(controller_class, action) instrument_gem_cancan controller_class, action instrument_gem_ransack controller_class, action instrument_gem_authlogic controller_class, action instrument_gem_devise controller_class, action end |