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