Class: Sufia::Models::InstallGenerator

Inherits:
Rails::Generators::Base
  • Object
show all
Includes:
Rails::Generators::Migration
Defined in:
lib/generators/sufia/models/install_generator.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.next_migration_number(path) ⇒ Object

Implement the required interface for Rails::Generators::Migration. taken from github.com/rails/rails/blob/master/activerecord/lib/generators/active_record.rb



26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/generators/sufia/models/install_generator.rb', line 26

def self.next_migration_number(path)
  if @prev_migration_nr
    @prev_migration_nr += 1
  else
    if last_migration = Dir[File.join(path, '*.rb')].sort.last
      @prev_migration_nr = last_migration.sub(File.join(path, '/'), '').to_i + 1
    else
      @prev_migration_nr = Time.now.utc.strftime("%Y%m%d%H%M%S").to_i
    end
  end
  @prev_migration_nr.to_s
end

Instance Method Details



39
40
41
# File 'lib/generators/sufia/models/install_generator.rb', line 39

def banner
  say_status("warning", "GENERATING SUFIA MODELS", :yellow)
end

#cached_statsObject

Sets up cached usage stats



113
114
115
# File 'lib/generators/sufia/models/install_generator.rb', line 113

def cached_stats
  generate 'sufia:models:cached_stats'
end

#configure_usage_statsObject



94
95
96
# File 'lib/generators/sufia/models/install_generator.rb', line 94

def configure_usage_stats
  generate 'sufia:models:usagestats'
end

#copy_migrationsObject

Setup the database migrations



44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/generators/sufia/models/install_generator.rb', line 44

def copy_migrations
  # Can't get this any more DRY, because we need this order.
  [
    "acts_as_follower_migration.rb",
    "add_social_to_users.rb",
    "create_single_use_links.rb",
    "add_ldap_attrs_to_user.rb",
    "add_avatars_to_users.rb",
    "create_checksum_audit_logs.rb",
    "create_version_committers.rb",
    "add_groups_to_users.rb",
    "create_local_authorities.rb",
    "create_trophies.rb",
    'add_linkedin_to_users.rb',
    'create_tinymce_assets.rb',
    'create_content_blocks.rb',
    'create_featured_works.rb'
  ].each do |file|
    better_migration_template file
  end
end

#create_configuration_filesObject



79
80
81
82
83
84
85
86
87
88
# File 'lib/generators/sufia/models/install_generator.rb', line 79

def create_configuration_files
  append_file 'config/initializers/mime_types.rb',
                   "\nMime::Type.register 'application/x-endnote-refer', :endnote", {verbose: false }
  copy_file 'config/sufia.rb', 'config/initializers/sufia.rb'
  copy_file 'config/redis.yml', 'config/redis.yml'
  copy_file 'config/resque-pool.yml', 'config/resque-pool.yml'
  copy_file 'config/redis_config.rb', 'config/initializers/redis_config.rb'
  copy_file 'config/resque_admin.rb', 'config/initializers/resque_admin.rb'
  copy_file 'config/resque_config.rb', 'config/initializers/resque_config.rb'
end

#full_text_indexingObject

Sets up full-text indexing (Solr config + jars)



103
104
105
# File 'lib/generators/sufia/models/install_generator.rb', line 103

def full_text_indexing
  generate "sufia:models:fulltext"
end

#inject_sufia_user_behaviorObject

Add behaviors to the user model



67
68
69
70
71
72
73
74
75
76
77
# File 'lib/generators/sufia/models/install_generator.rb', line 67

def inject_sufia_user_behavior
  file_path = "app/models/#{model_name.underscore}.rb"
  if File.exists?(file_path)
    inject_into_file file_path, after: /include Hydra\:\:User.*$/ do
      "# Connects this user object to Sufia behaviors. " +
        "\n include Sufia::User\n"
    end
  else
    puts "     \e[31mFailure\e[0m  Sufia requires a user object. This generators assumes that the model is defined in the file #{file_path}, which does not exist.  If you used a different name, please re-run the generator and provide that name as an argument. Such as \b  rails -g sufia client"
  end
end


98
99
100
# File 'lib/generators/sufia/models/install_generator.rb', line 98

def install_blacklight_gallery
  generate "blacklight_gallery:install"
end

#install_mailboxerObject



90
91
92
# File 'lib/generators/sufia/models/install_generator.rb', line 90

def install_mailboxer
  generate "mailboxer:install"
end

#proxiesObject

Sets up proxies and transfers



108
109
110
# File 'lib/generators/sufia/models/install_generator.rb', line 108

def proxies
  generate "sufia:models:proxies"
end