Sha256: 993ebee0efc359157502a98dc74fdaf4da2123331835fe73ae82885e7b939bff

Contents?: true

Size: 1.73 KB

Versions: 11

Compression:

Stored size: 1.73 KB

Contents

require 'rails/generators'

class HoptoadGenerator < Rails::Generators::Base

  class_option :api_key, :aliases => "-k", :type => :string, :desc => "Your Hoptoad API key"
  class_option :heroku, :type => :boolean, :desc => "Use the Heroku addon to provide your Hoptoad API key"

  def self.source_root
    @_hoptoad_source_root ||= File.expand_path("../../../../../generators/hoptoad/templates", __FILE__)
  end

  def install
    ensure_api_key_was_configured
    ensure_plugin_is_not_present
    append_capistrano_hook
    generate_initializer unless api_key_configured?
    test_hoptoad
  end

  private

  def ensure_api_key_was_configured
    if !options[:api_key] && !options[:heroku] && !api_key_configured?
      puts "Must pass --api-key or --heroku or create config/initializers/hoptoad.rb"
      exit
    end
  end

  def ensure_plugin_is_not_present
    if plugin_is_present?
      puts "You must first remove the hoptoad_notifier plugin. Please run: script/plugin remove hoptoad_notifier"
      exit
    end
  end

  def append_capistrano_hook
    if File.exists?('config/deploy.rb') && File.exists?('Capfile')
      append_file('config/deploy.rb', <<-HOOK)

        require 'config/boot'
        require 'hoptoad_notifier/capistrano'
      HOOK
    end
  end

  def api_key_expression
    s = if options[:api_key]
      "'#{options[:api_key]}'"
    elsif options[:heroku]
      "ENV['HOPTOAD_API_KEY']"
    end
  end

  def generate_initializer
    template 'initializer.rb', 'config/initializers/hoptoad.rb'
  end

  def api_key_configured?
    File.exists?('config/initializers/hoptoad.rb')
  end

  def test_hoptoad
    puts run("rake hoptoad:test --trace")
  end

  def plugin_is_present?
    File.exists?('vendor/plugins/hoptoad_notifier')
  end
end

Version data entries

11 entries across 11 versions & 2 rubygems

Version Path
hoptoad_notifier-2.3.10 lib/rails/generators/hoptoad/hoptoad_generator.rb
hoptoad_notifier-2.3.9 lib/rails/generators/hoptoad/hoptoad_generator.rb
hoptoad_notifier-2.3.8 lib/rails/generators/hoptoad/hoptoad_generator.rb
hoptoad_notifier-2.3.7 lib/rails/generators/hoptoad/hoptoad_generator.rb
hoptoad_notifier-2.3.6 lib/rails/generators/hoptoad/hoptoad_generator.rb
hoptoad_notifier-2.3.5 lib/rails/generators/hoptoad/hoptoad_generator.rb
hoptoad_notifier-2.3.4 lib/rails/generators/hoptoad/hoptoad_generator.rb
hoptoad_notifier-2.3.3 lib/rails/generators/hoptoad/hoptoad_generator.rb
hoptoad_notifier-2.3.2 lib/rails/generators/hoptoad/hoptoad_generator.rb
jordan-brough-hoptoad_notifier-2.3.0 lib/rails/generators/hoptoad/hoptoad_generator.rb
hoptoad_notifier-2.3.0 lib/rails/generators/hoptoad/hoptoad_generator.rb