Class: Webring::Generators::MembershipRequestGenerator
- Inherits:
-
Rails::Generators::Base
- Object
- Rails::Generators::Base
- Webring::Generators::MembershipRequestGenerator
- Includes:
- Rails::Generators::Migration, Shared::RouteInjector
- Defined in:
- lib/generators/webring/membership_request/membership_request_generator.rb
Overview
After running this generator, you should run the migration with: rails db:migrate
It creates both the model file and a migration to create the database table
Class Method Summary collapse
-
.next_migration_number(dirname) ⇒ Integer
Generates the next migration number for the migration file This is required by Rails::Generators::Migration.
Instance Method Summary collapse
-
#create_migration_file ⇒ Object
Creates a migration file to create the webring_membership_requests table.
-
#create_model_file ⇒ Object
Creates the MembershipRequest model file based on the template.
-
#inject_into_member_model ⇒ Object
Injects the belongs_to relationship into the Member model.
-
#show_readme ⇒ Object
Displays the README with next steps after installation.
Class Method Details
.next_migration_number(dirname) ⇒ Integer
Generates the next migration number for the migration file This is required by Rails::Generators::Migration
69 70 71 72 |
# File 'lib/generators/webring/membership_request/membership_request_generator.rb', line 69 def self.next_migration_number(dirname) next_migration_number = current_migration_number(dirname) + 1 ActiveRecord::Migration.next_migration_number(next_migration_number) end |
Instance Method Details
#create_migration_file ⇒ Object
Creates a migration file to create the webring_membership_requests table
29 30 31 32 |
# File 'lib/generators/webring/membership_request/membership_request_generator.rb', line 29 def create_migration_file migration_template 'migration.rb', 'db/migrate/create_webring_membership_requests.rb' migration_template 'relations_migration.rb', 'db/migrate/add_membership_request_to_webring_members.rb' end |
#create_model_file ⇒ Object
Creates the MembershipRequest model file based on the template
35 36 37 |
# File 'lib/generators/webring/membership_request/membership_request_generator.rb', line 35 def create_model_file template 'model.rb', 'app/models/webring/membership_request.rb' end |
#inject_into_member_model ⇒ Object
Injects the belongs_to relationship into the Member model
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/generators/webring/membership_request/membership_request_generator.rb', line 40 def inject_into_member_model member_model_path = 'app/models/webring/member.rb' inject_conditions = [ { line: 'UID_LENGTH =', inject_options: { after: /UID_LENGTH =.*\n\n/ } }, { line: 'extend Webring::Navigation', inject_options: { after: "extend Webring::Navigation\n\n" } }, { line: 'class Member < ApplicationRecord', inject_options: { after: "class Member < ApplicationRecord\n" } } ] return unless File.exist?(member_model_path) content = File.read(member_model_path) = inject_conditions.find { |condition| content.include?(condition[:line]) }&.fetch(:inject_options) return if .blank? inject_into_file member_model_path, ** do " belongs_to :membership_request,\n" \ " class_name: 'Webring::MembershipRequest',\n" \ " foreign_key: :webring_membership_request_id,\n" \ " optional: true,\n" \ " inverse_of: :member\n" \ "\n" end end |
#show_readme ⇒ Object
Displays the README with next steps after installation
75 76 77 |
# File 'lib/generators/webring/membership_request/membership_request_generator.rb', line 75 def show_readme readme 'AFTER_INSTALL' if behavior == :invoke end |