class ChargebeeRails::InstallGenerator

Public Class Methods

next_migration_number(dir) click to toggle source

Next migration number

# File lib/generators/chargebee_rails/install_generator.rb, line 22
def self.next_migration_number(dir)
  Time.now.utc.strftime("%Y%m%d%H%M%S")
end
source_paths() click to toggle source

The path for the custom migration templates

# File lib/generators/chargebee_rails/install_generator.rb, line 17
def self.source_paths
  [File.expand_path("../templates", __FILE__)]
end

Public Instance Methods

install() click to toggle source
# File lib/generators/chargebee_rails/install_generator.rb, line 31
def install

  # Generate chargebee_rails configuration file template
  template "config/initializers/chargebee_rails.rb"

  # Generate plan.
  generate("model", "plan name:string plan_id:string status:string chargebee_data:text")
  template "app/models/plan.rb"

  # Generate subscription.
  migration_template "new_subscription_migration.rb", "db/migrate/create_subscriptions.rb"
  template "app/models/subscription.rb"

  # Generate payment methods.
  generate("model", "payment_method cb_customer_id:string auto_collection:boolean payment_type:string reference_id:string card_last4:string card_type:string status:string event_last_modified_at:datetime subscription:references")

  # Generate chargebee rails event.
  migration_template "event_sync_log_migration.rb", "db/migrate/create_event_sync_log.rb"

  # Add related fields to the subscription owner table
  generate("migration", "add_chargebee_id_to_#{subscriber_model} chargebee_id:string event_last_modified_at:datetime chargebee_data:text")

  # Specify the relationship between subscription and owner
  inject_into_class "app/models/#{subscriber_model}.rb", subscriber_model.camelize.constantize,
                    "  include ChargebeeRails::Customer\n\n  # Added by ChargebeeRails.\n  has_one :subscription\n  serialize :chargebee_data, JSON\n"
end
subscriber_model() click to toggle source

Override subscriber_model to ensure it is always returned lowercase.

# File lib/generators/chargebee_rails/install_generator.rb, line 27
def subscriber_model
  @subscriber_model.downcase
end