Rails templateで開発の初速を上げよう
第15回 岡山Ruby,Ruby on Rails勉強会 @patorash
名前:尾古 豊明twitter: @patorash所属:株式会社リゾーム業務内容:
新商品開発チームで新商品を開発しています。
また週一度、チーム勉強会を、月一度、チームLT会をしています。
自己紹介
みなさんrails newしてますか?
久々にrails newしたら…
環境構築が辛過ぎワロエナイ…
● rspecがない● capybaraがない● テンプレートエンジンがslimじゃない● bootstrapを入れないといけない● その他使いたいgemが云々…
rails newが辛すぎる…その①Gemfileがスッカスカ
「開発中のプロジェクトからGemfileパクってくればよくね?」
● rails g rspec:install● rails g bootstrap:install less● rails g simple_form:install --bootstrap● rails g devise:install● rails g devise User● あとなんだっけ…?
rails newが辛すぎる…その②gemのインストールが面倒
● localeを:jaにして● timezoneをtokyoにして…● sessionをdatabaseにして…● unicornを起動できるようにして…● capybara_webkitが動くようにして…● database_cleanerが動くようにして…● あとなんだっけ…?
rails newが辛すぎる…その③設定ファイルがの変更が面倒
気付くともう寝ないとヤバい時間になっている!
コーディングが…したいです…!
じゃあテンプレートプロジェクトを作っておけばいいんじゃないか?(rails new 直後のものを保存しとく等)
だいたい使う機能は決まってる
Railsのバージョンアップ時に困る
そこでrails templateを使う
● rails new でプロジェクトが作られた後に実行されるruby scriptです。
● -m オプションでテンプレートになるスクリプトファイルを指定します。rails new BigProject -m rails_template/template.rb -d=postgresql
rails templateとは?
● Gemfileの書き換え● rbファイル内のコメント化と解除● bundle install実行● rakeコマンド実行● rails gコマンド実行● runメソッド経由でシェル操作● gitコマンド実行● environment毎の編集
rails templateでできること
つまり多機能!
多機能is
わからない、面倒くさい
出来上がった奴、ないの?
大量にある
メジャーなやつを引っこ抜いて編集すればなんとかなるんじゃないか?と思ったが…
● 何の為のgemかわからない。● 意図を読まなければならない。● 人のソースを読むのには体力が要る。
他人のrails templateがダメな理由
結局自分で作ったほうが速かったりするし、後々templateのメンテナンスできるようになるので、
自分で最初から作りました。【僕の考えた最強のrails template】
https://github.com/patorash/rails_template
● rspecが使える● factory_girlが使える● database_cleanerが設定されている● parallel_testsが使える● テンプレートエンジンslimが使える● simple_formが使える● bootstrapが使える● wheneverが使える● active_decoratorが使える● letter_openerが使える● 要らないテストが自動生成されない● -d=postgresqlを指定されたら、プロジェクト名のpostgresqlユーザーを作る。
データベース作成権限を与える。● unicornで動く● foreman startでunicorn起動する● deviseが使える● devise-i18nが使える● cancanが使える● .gitignoreを再作成する● gitで初回コミットする● Bitbucketにプライベートリポジトリを作成する● herokuにデプロイできる
俺俺rails templateでできること
多すぎてわからないだろうから
割愛
自分で作ったり、拾ってきたtemplateを改造できるように、私がrails templateを作る過程でわかったTipsを披露します。
1. 1つずつのgemに対して設定していくこと2. 使った事のあるgemのみ対応すること3. 1つ対応したらgit commitすること4. 根気よく取り組むこと(重要)5. rails template用のメソッドがわからない場合
は、methods.sort.each do |m| puts mend
Rails templateを作るときに気をつけるポイント
# Gemfileに追記するgem_group :development, :test do gem ‘rspec-rails’end
run_bundle # bundle install
generate ‘rspec:install’ #rails g rspec:installremove_dir ‘test’
# .rspecファイルに追記するappend_to_file '.rspec' do "--format documentation\n--format ParallelTests::RSpec::FailuresLogger --out tmp/failing_specs.log"end
例①:rspecを入れる
gem ‘simple_form’
run_bundle # bundle install
generate ‘simple_form:install’
例②:simple_formを入れる
gem ‘simple_form’use_bootstrap = if yes?(‘Use Bootstrap?’) # ユーザーに質問する uncomment_lines ‘Gemfile’, “gem ‘therubyracer’” gem ‘less-rails’ gem ‘twitter-bootstrap-rails’ true else false endrun_bundle # bundle installif use_bootstrap generate ‘bootstrap:install’, ‘less’ generate ‘simple_form:install’, ‘--bootstrap’ # bootstrap用simple_formを入れる if yes?(‘Use responsive layout?’) generate ‘bootstrap:layout’, ‘application fluid’ # レスポンシブレイアウト else generate ‘bootstrap:layout’, ‘application fixed’ # ヘッダー固定レイアウト endelse generate ‘simple_form:install’ # 素のsimple_formを入れるend
例③:simple_formとtwitter-bootstrap_railsを連携する
# rails newの時の-dオプションで決まる。# デフォルトだとsqlite3。case gem_for_database when ‘pg’ run “createuser -h localhost -d #{app_name}” elseend
例④:データベースタイプ毎に処理を分ける
rake ‘db:drop’rake ‘db:create’rake ‘db:migrate’
例⑤:rakeを使う
git :initgit add: ‘.’git commit: %Q{ -m ‘Initial commit’ }
※応用すると、githubやBitbucketに新しいリポジトリを作ってpushする事も可能。
例⑥:gitを使う
application do %Q{ config.generators do |g| g.test_framework :rspec, fixture: true g.assets false #他にも色々 end }end
# config/environments/****.rbに記述するenvironment ‘config.serve_static_assets = true’, env: ‘production’
例⑥:アプリケーション設定
時間があればデモします。
ご清聴ありがとうございました
Top Related