class RailsInit::CLI

Public Instance Methods

create() click to toggle source
# File lib/rails_init/cli.rb, line 15
def create
  working_dir
  gemfile_init
  exec_cmd bundle_cmd
  exec_cmd rails_cmd
end
version() click to toggle source
# File lib/rails_init/cli.rb, line 24
def version
  puts RailsInit::VERSION
end

Private Instance Methods

bundle_cmd() click to toggle source
# File lib/rails_init/cli.rb, line 52
def bundle_cmd
  opts = []
  opts << "--path=#{options[:path]}"
  opts << "--jobs=#{options[:jobs]}"
  "bundle install #{opts.join("\s")} #{options[:bundle_opts].join("\s")}"
end
exec_cmd(command) click to toggle source
# File lib/rails_init/cli.rb, line 65
def exec_cmd(command)
  pid = spawn(command)
  Process::wait(pid)
end
gemfile_init() click to toggle source
# File lib/rails_init/cli.rb, line 41
def gemfile_init
  latest = /rails\s\(([0-9.]+)\)/.match(`gem search --remote "^rails$"`)[1]
  print "Rails version (latest #{latest}): "
  version = STDIN.gets
  File.open 'Gemfile', 'w' do |f|
    f.puts "source 'https://rubygems.org'"
    f.print "gem 'rails'"
    f.print ", '#{version}'" unless version.strip!.empty?
  end
end
rails_cmd() click to toggle source
# File lib/rails_init/cli.rb, line 59
def rails_cmd
  opts = []
  opts << '--force' if options[:force]
  "bundle exec rails new . #{opts.join("\s")} #{options[:rails_opts].join("\s")}"
end
working_dir() click to toggle source
# File lib/rails_init/cli.rb, line 31
def working_dir
  print "Project directory (#{Dir.pwd}): "
  project_dir = STDIN.gets
  unless project_dir.strip!.empty?
    project_dir = Pathname.new(project_dir).expand_path
    Dir.mkdir project_dir unless Dir.exist? project_dir
    Dir.chdir project_dir
  end
end