Class: Orcid::InstallGenerator

Inherits:
Rails::Generators::Base
  • Object
show all
Defined in:
lib/generators/orcid/install/install_generator.rb

Overview

If you want to quickly add Orcid integration into your application. This assumes the use of the ubiqutous Devise gem.

Instance Method Summary collapse

Instance Method Details

#copy_localeObject



35
36
37
38
39
40
# File 'lib/generators/orcid/install/install_generator.rb', line 35

def copy_locale
  copy_file(
    '../../../../../config/locales/orcid.en.yml',
    'config/locales/orcid.en.yml'
  )
end

#create_application_ymlObject



12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/generators/orcid/install/install_generator.rb', line 12

def create_application_yml
  unless options[:skip_application_yml]
    create_file 'config/application.yml' do
      orcid_app_id = ask('What is your Orcid Client ID?')
      orcid_app_secret = ask('What is your Orcid Client Secret?')
      [
        '',
        "ORCID_APP_ID: #{orcid_app_id}",
        "ORCID_APP_SECRET: #{orcid_app_secret}",
        ''
      ].join("\n")
    end
  end
end

#install_devise_multi_authObject



27
28
29
30
31
32
33
# File 'lib/generators/orcid/install/install_generator.rb', line 27

def install_devise_multi_auth
  if options[:devise]
    generate 'devise:multi_auth:install --install_devise'
  else
    generate 'devise:multi_auth:install'
  end
end

#install_initializerObject



79
80
81
82
83
84
# File 'lib/generators/orcid/install/install_generator.rb', line 79

def install_initializer
  template(
    'orcid_initializer.rb.erb',
    'config/initializers/orcid_initializer.rb'
  )
end

#install_migrationsObject



42
43
44
# File 'lib/generators/orcid/install/install_generator.rb', line 42

def install_migrations
  rake 'orcid:install:migrations'
end

#migrate_the_databaseObject



75
76
77
# File 'lib/generators/orcid/install/install_generator.rb', line 75

def migrate_the_database
  rake 'db:migrate'
end

#mount_orcid_engineObject



71
72
73
# File 'lib/generators/orcid/install/install_generator.rb', line 71

def mount_orcid_engine
  route 'mount Orcid::Engine => "/orcid"'
end

#update_devise_omniauth_providerObject



54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# File 'lib/generators/orcid/install/install_generator.rb', line 54

def update_devise_omniauth_provider
  init_code = %(
    config.omniauth(:orcid, Orcid.provider.id, Orcid.provider.secret,
                    scope: Orcid.provider.authentication_scope,
                    client_options: {
                      site: Orcid.provider.site_url,
                      authorize_url: Orcid.provider.authorize_url,
                      token_url: Orcid.provider.token_url
                    }
                    )
  )
  insert_into_file(
    'config/initializers/devise.rb',
    init_code, after: /Devise\.setup.*$/, verbose: true
  )
end

#update_devise_userObject



46
47
48
49
50
51
52
# File 'lib/generators/orcid/install/install_generator.rb', line 46

def update_devise_user
  config_code = ', :omniauthable, :omniauth_providers => [:orcid]'
  insert_into_file(
    'app/models/user.rb',
    config_code, after: /:validatable/, verbose: false
  )
end