class Kitestrings::Generators::MessagesGenerator

Public Class Methods

next_migration_number(dirname) click to toggle source
# File lib/generators/kitestrings/messages_generator.rb, line 69
def self.next_migration_number(dirname)
  Time.now.utc.strftime("%Y%m%d%H%M%S")
end

Public Instance Methods

setup_messages_model() click to toggle source
# File lib/generators/kitestrings/messages_generator.rb, line 9
      def setup_messages_model
        template "message.rb.erb", "app/models/message.rb"
        copy_file "message_mailer.rb", "app/mailers/message_mailer.rb"
        copy_file "default.text.erb", "app/views/message_mailer/default.text.erb"
        copy_file "message_spec.rb", "spec/models/message_spec.rb"
        copy_file "messages.rb", "spec/factories/messages.rb"
        copy_file "messages_controller.rb", "app/controllers/messages_controller.rb"
        copy_file "messages_controller_spec.rb", "spec/controllers/messages_controller_spec.rb"
        copy_file "index.html.haml", "app/views/messages/index.html.haml"
        copy_file "show.html.haml", "app/views/messages/show.html.haml"

        if Dir.glob(destination_root + "/db/migrate/*create_messages.rb").count == 0
          migration_template "message_migration.rb", "db/migrate/create_messages.rb"
        end

        routes = <<RUBY
  resources :messages, only: [:index, :show]
  # also nest under user, for example:
  # resources :user do
  #   resources :messages, only: [:index, :show]
  # end
RUBY
        inject_into_file "config/routes.rb", routes, :before => /^end/


        puts <<OUTPUT
-------------------------------------------------------------------------------

Kitestrings Message scaffold. Please complete the following manually:

1. Check config/routes.rb for nesting messages under the user model. For example:

  resources :user do
    resources :messages, only: [:index, :show]
  end

2. Update CanCan abilities so users can read their messages, for example:

    can(:read, Message) { |message| message.user == user }
    can(:index_all, Message) if user.admin?

3. Add the following to your user model

  has_many :messages

4. Set the default host. This is needed as the Message model needs to generate
   absolute URLs to be inserted into email bodies. Example, add to routes.rb:

  default_url_options :host => (ENV['DEFAULT_URL_HOST'] || 'localhost')

5. Add "message" and "message_other" to your common lets. Example:

  # Messages
  let(:message) { create :message, user: user }
  let(:message_other) { create :message, user: user_other }

-------------------------------------------------------------------------------
OUTPUT
      end