class Blacklight::UserGenerator

Public Instance Methods

generate_devise_assets() click to toggle source
# File lib/generators/blacklight/user_generator.rb, line 21
def generate_devise_assets
  return unless options[:devise]

  gem "devise"
  gem "devise-guests", "~> 0.8"

  inside destination_root do
    Bundler.with_clean_env do
      run "bundle install"
    end
  end

  generate "devise:install"
  generate "devise", model_name.classify
  generate "devise_guests", model_name.classify

  # add the #to_s to the model.
  insert_into_file("app/models/#{model_name}.rb", before: /end(\n| )*$/) do
    "\n  # Method added by Blacklight; Blacklight uses #to_s on your\n" \
    "  # user class to get a user-displayable login/identifier for\n" \
    "  # the account.\n" \
    "  def to_s\n" \
    "    email\n" \
    "  end\n"
  end
  gsub_file("config/initializers/devise.rb", "config.sign_out_via = :delete", "config.sign_out_via = :get")
end
inject_blacklight_user_behavior() click to toggle source

Add Blacklight to the user model

# File lib/generators/blacklight/user_generator.rb, line 50
    def inject_blacklight_user_behavior
      file_path = "app/models/#{model_name.underscore}.rb"
      if File.exist?(File.expand_path(file_path, destination_root))
        inject_into_class file_path, model_name.classify do
          "\n  # Connects this user object to Blacklights Bookmarks." \
          "\n  include Blacklight::User\n"
        end
      else
        say_status "warning", <<-EOS.strip_heredoc, :yellow
          Blacklight authenticated user functionality not installed, as a user model
          could not be found at /app/models/user.rb. If you used a different name,
          please re-run the migration and provide that name as an argument. E.g.:

            `rails -g blacklight:user client`
        EOS
      end
    end