class HappySeed::Generators::HappySeedGenerator

Protected Class Methods

gem_available?( name ) click to toggle source
# File lib/generators/happy_seed/happy_seed_generator.rb, line 59
def self.gem_available?( name )
  Bundler.with_clean_env do
    begin
      return Bundler.environment.gem name
    rescue Gem::LoadError
      false
    end
  end
end

Protected Instance Methods

add_env( key ) click to toggle source
# File lib/generators/happy_seed/happy_seed_generator.rb, line 69
def add_env( key )
  defaults_file = File.expand_path ".seed_defaults", ENV['HOME']
  value = "#{key}=\n"
  if File.exists? defaults_file
    value = File.readlines( defaults_file ).grep( /#{key}=/ ).first || value
  end
  append_to_file ".env", value
end
add_omniauth( provider, scope = nil, client_api = nil, init = nil ) click to toggle source
# File lib/generators/happy_seed/happy_seed_generator.rb, line 25
        def add_omniauth( provider, scope = nil, client_api = nil, init = nil )
          scopeline = nil
          scopeline = ", scope: \"#{scope}\"" if scope
          inject_into_file 'config/initializers/devise.rb', after: "==> OmniAuth\n" do <<-"RUBY"
    config.omniauth :#{provider}, ENV['#{provider.upcase}_APP_ID'], ENV['#{provider.upcase}_APP_SECRET']#{scopeline}
  RUBY
          end
          begin
            add_env "#{provider.upcase}_APP_ID"
            add_env "#{provider.upcase}_APP_SECRET"
          rescue
            say_status :env, "Unable to add template variables to .env", :red
          end

          client_api ||= provider.to_s.humanize
          init ||= "access_token: #{provider}.accesstoken"
          inject_into_file 'app/controllers/omniauth_callbacks_controller.rb', "\n  def #{provider}\n    generic_callback( '#{provider}' )\n  end\n", before: /\s*def generic_callback/
          inject_into_file 'app/models/user.rb', :before => "\nend" do <<-"RUBY"

  def #{provider}
    identities.where( :provider => "#{provider}" ).first
  end

  def #{provider}_client
    @#{provider}_client ||= #{client_api}.client( #{init} )
  end
RUBY
          end
        end
already_installed() click to toggle source
# File lib/generators/happy_seed/happy_seed_generator.rb, line 7
def already_installed
  installed = self.class.fingerprint
  puts "#{self.class.to_s} has already been run" if installed
  installed
end
fingerprint() click to toggle source
# File lib/generators/happy_seed/happy_seed_generator.rb, line 13
def fingerprint
  raise "Fingerprint not implemented in #{self.to_s}"
end
gem_available?(name) click to toggle source
# File lib/generators/happy_seed/happy_seed_generator.rb, line 55
def gem_available?(name)
  self.gem_available?( name )
end
require_generator(kls) click to toggle source
# File lib/generators/happy_seed/happy_seed_generator.rb, line 17
def require_generator kls
  if !kls.fingerprint
    name = kls.to_s.gsub( /.*::/, "" ).gsub( /Generator/, "" ).underscore
    puts "Running dependancy happy_seed:#{name}"
    generate "happy_seed:#{name}"
  end
end