Rails pluginをこまめにつくるようになったのでrails plugin new用のtemplateを用意した。
とにかく一発でできるようにしようとgsub_file
とバッククオートの乱暴なやつになった。
spec.add_development_dependency
とか追加できるコマンドはあるのだろうか。
rails plugin new
rails _4.0.0_ plugin new my_plugin_name --skip-test-unit --skip-bundle --dummy-path=spec/dummy -m plugin_template.rb
template.rb
gemspec_path = "#{self.name}.gemspec"
gsub_file gemspec_path, %r{TODO\: Your name}, 'mmmpa'
gsub_file gemspec_path, %r{TODO\: Your email}, 'mmmpa.mmmpa@gmail.com'
gsub_file gemspec_path, '|s|', '|spec|'
gsub_file gemspec_path, 's.', 'spec.'
gsub_file gemspec_path, 'spec.homepage = "TODO"', 'spec.homepage = "http://mmmpa.net"'
gsub_file gemspec_path, %r{^.+spec\.files[\s\S]*}, <<EOS
spec.files = `git ls-files`.split("\\n")
spec.test_files = `git ls-files -- {test,spec,features}/*`.split("\\n")
spec.executables = `git ls-files -- bin/*`.split("\\n").map{ |f| File.basename(f) }
spec.require_paths = ["lib"]
spec.add_dependency "rails", "~> 4.0"
spec.add_development_dependency "bundler", "~> 1.10"
spec.add_development_dependency "rake", "~> 10.0"
spec.add_development_dependency "sqlite3"
spec.add_development_dependency "rspec"
spec.add_development_dependency "rspec-rails"
spec.add_development_dependency "rspec-html-matchers"
spec.add_development_dependency "factory_girl_rails"
spec.add_development_dependency "coveralls"
spec.add_development_dependency "rb-readline"
end
EOS
gsub_file 'MIT-LICENSE', 'YOURNAME', 'mmmpa'
remove_file 'README.rdoc'
inside('') do
run "cp #{__dir__}/template_files/.travis.yml .travis.yml"
run "cp #{__dir__}/template_files/.coveralls.yml .coveralls.yml"
run "cp #{__dir__}/template_files/.codeclimate.yml .codeclimate.yml"
run "bundle install"
end
inside('spec/dummy') do
run "cp config/database.yml config/database.def.yml"
run "rails generate rspec:install"
run "mv spec/spec_helper.rb ../spec_helper.rb"
run "mv spec/rails_helper.rb ../rails_helper.rb"
run "mv .rspec ../../.rspec"
run "rm -fr spec"
end
gsub_file 'spec/spec_helper.rb', /\A/, <<EOS
require 'coveralls'
Coveralls.wear!
EOS
gsub_file 'spec/rails_helper.rb', %r{[\s\S]*^require 'rspec/rails'}, <<EOS
# This file is copied to spec/ when you run 'rails generate rspec:install'
ENV['RAILS_ENV'] ||= 'test'
require File.expand_path('../dummy/config/environment', __FILE__)
# Prevent database truncation if the environment is production
abort("The Rails environment is running in production mode!") if Rails.env.production?
require 'spec_helper'
require 'rspec/rails'
require 'factory_girl_rails'
require 'rspec-html-matchers'
EOS
gsub_file 'spec/rails_helper.rb', 'RSpec.configure do |config|', <<EOS
RSpec.configure do |config|
config.include RSpecHtmlMatchers
config.include FactoryGirl::Syntax::Methods
config.before(:all) do
FactoryGirl.reload
end
EOS
gsub_file 'spec/dummy/config/application.rb', ' class Application < Rails::Application', <<EOS
class Application < Rails::Application
config.generators do |g|
g.assets false
g.helper false
g.view false
g.test_framework :rspec, fixtures: true, view_specs: false, helper_specs: false, routing_specs:
false, controller_specs: true, request_specs: true
g.fixture_replacement :factory_girl, dir: 'spec/factories'
end
EOS
inside('') do
`git init`
`git config user.name mmmpa`
`git config user.email "mmmpa.mmmpa@gmail.com"`
`git add .`
`git commit -m 'readied'`
`git remote add origin github:mmmpa/#{self.name}.git`
end