class PuntoPagosRails::PaymentFlowGenerator
Public Instance Methods
add_controller()
click to toggle source
# File lib/generators/punto_pagos_rails/payment_flow/payment_flow_generator.rb, line 22 def add_controller template("transactions_controller.rb.erb", controller_path) end
add_routes()
click to toggle source
# File lib/generators/punto_pagos_rails/payment_flow/payment_flow_generator.rb, line 31 def add_routes line = "Rails.application.routes.draw do" gsub_file "config/routes.rb", /(#{Regexp.escape(line)})/mi do |match| <<-HERE.gsub(/^ {9}/, '') #{match} #{options.ssl? ? 'post' : 'get'} "#{controller_name}/notification#{options.ssl? ? '' : '/:token'}", to: "#{controller_name}#notification" get "#{controller_name}/error/:token", to: "#{controller_name}#error", as: :#{singular_controller_name}_error get "#{controller_name}/success/:token", to: "#{controller_name}#success", as: :#{singular_controller_name}_success post "#{controller_name}/create", to: "#{controller_name}#create", as: :#{singular_controller_name}_create HERE end end
copy_views()
click to toggle source
# File lib/generators/punto_pagos_rails/payment_flow/payment_flow_generator.rb, line 26 def copy_views template("success.html.erb", "app/views/#{controller_name}/success.html.erb") template("error.html.erb", "app/views/#{controller_name}/error.html.erb") end
create_payable_model()
click to toggle source
# File lib/generators/punto_pagos_rails/payment_flow/payment_flow_generator.rb, line 9 def create_payable_model Rails.application.eager_load! models = ActiveRecord::Base.descendants.map(&:to_s) models.include?(payable_class) ? add_payment_attributes_to_payable : create_payable end
extend_payable_abilities()
click to toggle source
# File lib/generators/punto_pagos_rails/payment_flow/payment_flow_generator.rb, line 15 def extend_payable_abilities line = "class #{payable_class} < ActiveRecord::Base" gsub_file "app/models/#{payable}.rb", /(#{Regexp.escape(line)})/mi do |match| "#{match}\n include PuntoPagosRails::Payable\n" end end
Private Instance Methods
add_payment_attributes_to_payable()
click to toggle source
# File lib/generators/punto_pagos_rails/payment_flow/payment_flow_generator.rb, line 74 def add_payment_attributes_to_payable generate "migration add_amount_to_#{payable_table_name} amount:integer payment_state:string" end
controller_class()
click to toggle source
# File lib/generators/punto_pagos_rails/payment_flow/payment_flow_generator.rb, line 70 def controller_class "#{payments_controller_name.classify.pluralize}Controller" end
controller_name()
click to toggle source
# File lib/generators/punto_pagos_rails/payment_flow/payment_flow_generator.rb, line 62 def controller_name payments_controller_name.tableize.pluralize end
controller_path()
click to toggle source
# File lib/generators/punto_pagos_rails/payment_flow/payment_flow_generator.rb, line 58 def controller_path "app/controllers/#{controller_name}_controller.rb" end
create_payable()
click to toggle source
# File lib/generators/punto_pagos_rails/payment_flow/payment_flow_generator.rb, line 78 def create_payable generate "model #{payable} amount:integer payment_state:string --no-fixture" end
payable()
click to toggle source
# File lib/generators/punto_pagos_rails/payment_flow/payment_flow_generator.rb, line 46 def payable payable_table_name.singularize end
payable_class()
click to toggle source
# File lib/generators/punto_pagos_rails/payment_flow/payment_flow_generator.rb, line 54 def payable_class payable.classify end
payable_table_name()
click to toggle source
# File lib/generators/punto_pagos_rails/payment_flow/payment_flow_generator.rb, line 50 def payable_table_name payable_model_name.tableize end
singular_controller_name()
click to toggle source
# File lib/generators/punto_pagos_rails/payment_flow/payment_flow_generator.rb, line 66 def singular_controller_name controller_name.singularize end
ssl?()
click to toggle source
# File lib/generators/punto_pagos_rails/payment_flow/payment_flow_generator.rb, line 82 def ssl? options.ssl? end