Class: Gemsmith::Generators::Rails

Inherits:
Base
  • Object
show all
Defined in:
lib/gemsmith/generators/rails.rb

Overview

Generates Ruby on Rails support.

Instance Method Summary collapse

Methods inherited from Base

#initialize, run

Constructor Details

This class inherits a constructor from Gemsmith::Generators::Base

Instance Method Details

#create_engineObject



17
18
19
20
# File 'lib/gemsmith/generators/rails.rb', line 17

def create_engine
  cli.template "#{lib_root}/%gem_path%/engine.rb.tt", configuration
  cli.run "rails plugin new --skip #{configuration.dig :gem, :name} #{engine_options}"
end

#create_generator_filesObject



22
23
24
25
26
27
28
# File 'lib/gemsmith/generators/rails.rb', line 22

def create_generator_files
  cli.empty_directory "#{generator_root}/templates"
  cli.template "#{generator_root}/install/install_generator.rb.tt", configuration
  cli.template "#{generator_root}/install/USAGE.tt", configuration
  cli.template "#{generator_root}/upgrade/upgrade_generator.rb.tt", configuration
  cli.template "#{generator_root}/upgrade/USAGE.tt", configuration
end

#create_travis_gemfilesObject



30
31
32
33
# File 'lib/gemsmith/generators/rails.rb', line 30

def create_travis_gemfiles
  return unless configuration.dig(:generate, :travis)
  cli.template "%gem_name%/gemfiles/rails-%rails_version%.x.gemfile.tt", configuration
end

#install_railsObject



11
12
13
14
15
# File 'lib/gemsmith/generators/rails.rb', line 11

def install_rails
  return if rails?
  return unless cli.yes?("Ruby on Rails is not installed. Would you like it installed (y/n)?")
  cli.run "gem install rails"
end

#rails?Boolean

Returns:

  • (Boolean)


7
8
9
# File 'lib/gemsmith/generators/rails.rb', line 7

def rails?
  cli.run "command -v rails > /dev/null"
end

#remove_filesObject



40
41
42
43
44
45
# File 'lib/gemsmith/generators/rails.rb', line 40

def remove_files
  cli.remove_file "#{gem_name}/app/helpers/#{gem_path}/application_helper.rb", configuration
  cli.remove_file "#{gem_name}/lib/#{gem_path}/version.rb", configuration
  cli.remove_file "#{gem_name}/MIT-LICENSE", configuration
  cli.remove_file "#{gem_name}/README.rdoc", configuration
end

#runObject



47
48
49
50
51
52
53
54
55
56
# File 'lib/gemsmith/generators/rails.rb', line 47

def run
  return unless configuration.dig(:generate, :rails)

  install_rails
  create_engine
  create_generator_files
  create_travis_gemfiles
  stub_assets
  remove_files
end

#stub_assetsObject



35
36
37
38
# File 'lib/gemsmith/generators/rails.rb', line 35

def stub_assets
  cli.run %(printf "%s" > "#{gem_name}/app/assets/javascripts/#{gem_path}/application.js")
  cli.run %(printf "%s" > "#{gem_name}/app/assets/stylesheets/#{gem_path}/application.css")
end