Class: Hyrax::WorkResourceGenerator
- Inherits:
-
Rails::Generators::NamedBase
- Object
- Rails::Generators::NamedBase
- Hyrax::WorkResourceGenerator
- Includes:
- Rails::Generators::ModelHelpers
- Defined in:
- lib/generators/hyrax/work_resource/work_resource_generator.rb
Class Method Summary collapse
Instance Method Summary collapse
- #banner ⇒ Object
- #create_controller ⇒ Object
- #create_form ⇒ Object
- #create_indexer ⇒ Object
- #create_indexer_spec ⇒ Object
- #create_metadata_config ⇒ Object
- #create_model ⇒ Object
- #create_model_spec ⇒ Object
- #create_view_spec ⇒ Object
- #create_views ⇒ Object
-
#register_work ⇒ Object
Inserts after the last registered work, or at the top of the config block.
- #validate_name ⇒ Object
Class Method Details
.exit_on_failure? ⇒ Boolean
16 17 18 |
# File 'lib/generators/hyrax/work_resource/work_resource_generator.rb', line 16 def self.exit_on_failure? true end |
Instance Method Details
#banner ⇒ Object
27 28 29 30 31 32 33 |
# File 'lib/generators/hyrax/work_resource/work_resource_generator.rb', line 27 def if revoking? say_status("info", "DESTROYING VALKYRIE WORK MODEL: #{class_name}", :blue) else say_status("info", "GENERATING VALKYRIE WORK MODEL: #{class_name}", :blue) end end |
#create_controller ⇒ Object
35 36 37 |
# File 'lib/generators/hyrax/work_resource/work_resource_generator.rb', line 35 def create_controller template('controller.rb.erb', File.join('app/controllers/hyrax', class_path, "#{plural_file_name}_controller.rb")) end |
#create_form ⇒ Object
63 64 65 |
# File 'lib/generators/hyrax/work_resource/work_resource_generator.rb', line 63 def create_form template('form.rb.erb', File.join('app/forms/', class_path, "#{file_name}_form.rb")) end |
#create_indexer ⇒ Object
84 85 86 |
# File 'lib/generators/hyrax/work_resource/work_resource_generator.rb', line 84 def create_indexer template('indexer.rb.erb', File.join('app/indexers/', class_path, "#{file_name}_indexer.rb")) end |
#create_indexer_spec ⇒ Object
88 89 90 91 92 |
# File 'lib/generators/hyrax/work_resource/work_resource_generator.rb', line 88 def create_indexer_spec return unless rspec_installed? filepath = File.join('spec/indexers/', class_path, "#{file_name}_indexer_spec.rb") template('indexer_spec.rb.erb', filepath) end |
#create_metadata_config ⇒ Object
39 40 41 42 43 44 45 |
# File 'lib/generators/hyrax/work_resource/work_resource_generator.rb', line 39 def template('metadata.yaml', File.join('config/metadata/', "#{file_name}.yaml")) return if attributes.blank? gsub_file File.join('config/metadata/', "#{file_name}.yaml"), 'attributes: {}', { 'attributes' => attributes.collect { |arg| [arg.name, { 'type' => arg.type.to_s }] }.to_h }.to_yaml end |
#create_model ⇒ Object
47 48 49 |
# File 'lib/generators/hyrax/work_resource/work_resource_generator.rb', line 47 def create_model template('work.rb.erb', File.join('app/models/', class_path, "#{file_name}.rb")) end |
#create_model_spec ⇒ Object
51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/generators/hyrax/work_resource/work_resource_generator.rb', line 51 def create_model_spec return unless rspec_installed? filepath = File.join('spec/models/', class_path, "#{file_name}_spec.rb") template('work_spec.rb.erb', filepath) return if attributes.blank? inject_into_file filepath, after: /it_behaves_like 'a Hyrax::Work'\n/ do "\n context 'includes schema defined metadata' do\n"\ "#{attributes.collect { |arg| " it { is_expected.to respond_to(:#{arg.name}) }\n" }.join}" \ " end\n" end end |
#create_view_spec ⇒ Object
101 102 103 104 105 |
# File 'lib/generators/hyrax/work_resource/work_resource_generator.rb', line 101 def create_view_spec return unless rspec_installed? template('work.html.erb_spec.rb.erb', File.join('spec/views/', class_path, "#{plural_file_name}/_#{file_name}.html.erb_spec.rb")) end |
#create_views ⇒ Object
94 95 96 97 98 99 |
# File 'lib/generators/hyrax/work_resource/work_resource_generator.rb', line 94 def create_views create_file File.join('app/views/hyrax', class_path, "#{plural_file_name}/_#{file_name}.html.erb") do "<%# This is a search result view %>\n" \ "<%= render 'catalog/document', document: #{file_name}, document_counter: #{file_name}_counter %>\n" end end |
#register_work ⇒ Object
Inserts after the last registered work, or at the top of the config block
68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
# File 'lib/generators/hyrax/work_resource/work_resource_generator.rb', line 68 def register_work config = 'config/initializers/hyrax.rb' lastmatch = nil in_root do File.open(config).each_line do |line| lastmatch = line if line.match?(/config.register_curation_concern :(?!#{file_name})/) end content = " # Injected via `rails g hyrax:work_resource #{class_name}`\n" \ " config.register_curation_concern #{registration_path_symbol}\n" anchor = lastmatch || "Hyrax.config do |config|\n" inject_into_file config, after: anchor do content end end end |
#validate_name ⇒ Object
20 21 22 23 24 25 |
# File 'lib/generators/hyrax/work_resource/work_resource_generator.rb', line 20 def validate_name return unless name.strip.casecmp("work").zero? raise Thor::MalformattedArgumentError, set_color("Error: A work resource with the name '#{name}' would cause name-space clashes. "\ "Please use a different name.", :red) end |