rails templateで開発の初速を上げよう

Post on 28-May-2015

4.535 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Rails templateを使ってプロジェクトを作るときの話。

TRANSCRIPT

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