Your SlideShare is downloading. ×
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Real world rails
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Real world rails

1,433

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,433
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
9
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Transcript

    • 1. Real World RailsWithout tools he is nothing, with tools he is all. -Thomas Carlyle2012/3/30 yoyogi.rb
    • 2. 自己紹介フリーエンジニアRails歴4年くらいtwitter:@nysalorblog: http://blog.larus.jp/
    • 3. Real World?周辺ツールやノウハウなど開発編運用編
    • 4. 開発編Development
    • 5. Mac
    • 6. Mac
    • 7. Mac
    • 8. MacRubyが最初から入っている
    • 9. MacRubyが最初から入っている
    • 10. MacRubyが最初から入っている
    • 11. MacRubyが最初から入っているような気がしていたが別にそんなことはなかったぜ!
    • 12. Mac
    • 13. Mac
    • 14. Mac 最初から入っているRubyは1.8.7(Lion)> /usr/bin/ruby -vruby 1.8.7 (2010-01-10 patchlevel 249) [universal-darwin11.0] 結局は入れ直し(homebrew,rvmなど) Railsも入ってるけど2.3.3とかそのへん
    • 15. Mac
    • 16. Mac
    • 17. Macそれでもなお便利Xcodeで開発環境は一発UNIXコマンドが大抵使えるTimeMachine
    • 18. rvm/rbenv
    • 19. rvm/rbenvRVM http://beginrescueend.com/
    • 20. rvm/rbenvRVM http://beginrescueend.com/rbenv https://github.com/sstephenson/rbenv
    • 21. rvm/rbenvRVM http://beginrescueend.com/rbenv https://github.com/sstephenson/rbenv 複数バージョンのRubyを同居 「前のバージョン用のgemを使ってしまった」を防ぐ 開発・運用環境で同じRubyを使うメリット
    • 22. rvm/rbenvRVM http://beginrescueend.com/rbenv https://github.com/sstephenson/rbenv
    • 23. rvm/rbenvRVM http://beginrescueend.com/rbenv https://github.com/sstephenson/rbenv
    • 24. rvm/rbenvRVM http://beginrescueend.com/rbenv https://github.com/sstephenson/rbenv RVMが主流→最近はrbenvが流行 RVMは多機能だけど何度かやらかした rbenvは実行ファイルにやや癖がある
    • 25. screen/tmux
    • 26. screen/tmux
    • 27. screen/tmux
    • 28. screen/tmux
    • 29. screen/tmuxターミナルマルチプレクサirb,logなど複数のシェルを行き来するのに便利落ちても再起動するまでセッションが消えない設定がけっこう大変Terminal/iTermのタブでいいんじゃない?
    • 30. git
    • 31. git 分散リポジトリ 学習コストが高い? svnに慣れすぎていなければ平気 githubやherokuでどっちみち必要
    • 32. sourcetree
    • 33. sourcetreehttp://www.sourcetreeapp.com/
    • 34. sourcetreehttp://www.sourcetreeapp.com/
    • 35. sourcetreehttp://www.sourcetreeapp.com/ 見やすい 多機能(っぽいけどあまり使ってない) 登録必要だけど無料
    • 36. gitx
    • 37. gitx http://gitx.frim.nl/
    • 38. gitx http://gitx.frim.nl/
    • 39. gitx http://gitx.frim.nl/ 軽い 機能少ない diff見るだけなら十分
    • 40. github
    • 41. github http://github.com/
    • 42. github http://github.com/
    • 43. github http://github.com/ githubでいいんじゃね? プライベートリポジトリは有料 ネットがないと使えない
    • 44. やっぱりCUI
    • 45. やっぱりCUIGUIはdiff見たり検索するだけどっちみちCUIの操作は必要苦手な人は覚えましょう
    • 46. エディタ
    • 47. エディタ
    • 48. エディタ
    • 49. エディタ
    • 50. エディタEmacsVimTextMate
    • 51. Emacs
    • 52. EmacsCocoa Emacs(自分でビルド)inline-patchfull screen
    • 53. Emacs
    • 54. Emacsruby-moderuby-electricrinarietagsauto-complete
    • 55. Emacs
    • 56. Emacs
    • 57. Emacs
    • 58. Emacs
    • 59. Emacs設定をDropboxに置く起動したらずっとそのままexport EDITOR=emacsclient
    • 60. Pow
    • 61. Pow http://pow.cx/
    • 62. Pow http://pow.cx/
    • 63. Pow http://pow.cx/
    • 64. Pow http://pow.cx/
    • 65. Pow http://pow.cx/いちいちrails serverしなくてもいいhttp://xxxx.devでアクセスできる複数プロジェクトの同時開発に対応
    • 66. Pow http://pow.cx/
    • 67. Pow http://pow.cx/
    • 68. Pow http://pow.cx/gem install powderpowder -rでサーバ再起動powder applog,powder linkなど
    • 69. guard
    • 70. guardhttps://github.com/guard/guard
    • 71. guardhttps://github.com/guard/guardTDDファイルが更新されると自動実行いちいちrspecを実行するとサボりがちcoffee scriptの開発などにも使えるautospecというのもある
    • 72. spork
    • 73. sporkhttps://github.com/sporkrb/spork
    • 74. sporkhttps://github.com/sporkrb/spork分散テスト同時に複数のテストが実行されるデータベースを初期化する仕組みが不可欠
    • 75. capistrano
    • 76. capistrano https://github.com/capistrano/capistrano
    • 77. capistrano https://github.com/capistrano/capistranoデプロイツールサーバへのアップロードから再起動まで全て自動化環境ごとにデプロイ先やタスクを切り替えられる
    • 78. capistrano https://github.com/capistrano/capistrano
    • 79. capistrano https://github.com/capistrano/capistrano
    • 80. capistrano https://github.com/capistrano/capistrano リポジトリからコードをダウンロード
    • 81. capistrano https://github.com/capistrano/capistrano リポジトリからコードをダウンロード リビジョンごとのディレクトリに展開
    • 82. capistrano https://github.com/capistrano/capistrano リポジトリからコードをダウンロード リビジョンごとのディレクトリに展開 ログ・静的ファイル等をリンク
    • 83. capistrano https://github.com/capistrano/capistrano リポジトリからコードをダウンロード リビジョンごとのディレクトリに展開 ログ・静的ファイル等をリンク 必要なgem、rails自体のインストール
    • 84. capistrano https://github.com/capistrano/capistrano リポジトリからコードをダウンロード リビジョンごとのディレクトリに展開 ログ・静的ファイル等をリンク 必要なgem、rails自体のインストール サービスを再起動
    • 85. capistrano https://github.com/capistrano/capistrano
    • 86. capistrano https://github.com/capistrano/capistranoサーバ側にcapistranoは不要rails含めgemは一切不要ただしrubyとbundlerだけは必要
    • 87. 運用編Operation
    • 88. rvm/rbenv
    • 89. rvm/rbenvRVM http://beginrescueend.com/
    • 90. rvm/rbenvRVM http://beginrescueend.com/rbenv https://github.com/sstephenson/rbenv
    • 91. rvm/rbenvRVM http://beginrescueend.com/rbenv https://github.com/sstephenson/rbenv なるべくサーバ側にも入れておくべき gemの管理はbundlerがやってくれるので不要
    • 92. サーバ構成
    • 93. サーバ構成 WWWサーバ(フロントエンド)
    • 94. サーバ構成 WWWサーバ(フロントエンド) バックエンドサーバ
    • 95. サーバ構成 WWWサーバ(フロントエンド) バックエンドサーバ DBサーバ
    • 96. サーバ構成 WWWサーバ(フロントエンド) バックエンドサーバ Rails本体 DBサーバ
    • 97. サーバ構成 ロードバランサ WWWサーバ(フロントエンド) バックエンドサーバ Rails本体 DBサーバ
    • 98. サーバ構成 ロードバランサ キャッシュサーバ WWWサーバ(フロントエンド) バックエンドサーバ Rails本体 DBサーバ
    • 99. バックエンド
    • 100. バックエンドUnicornthinRainbows!mongrelWebrickPassenger
    • 101. バックエンド
    • 102. バックエンド
    • 103. バックエンド適当なポートで待ち受けるフロントエンドからリバースプロキシで接続
    • 104. バックエンド
    • 105. バックエンド
    • 106. バックエンド フロントエンドを挟む理由
    • 107. バックエンド フロントエンドを挟む理由静的コンテンツ(画像など)をいちいちRailsで処理するのは馬鹿げている
    • 108. バックエンド
    • 109. バックエンド
    • 110. バックエンドWWWサーバ(フロントエンド)
    • 111. バックエンドWWWサーバ(フロントエンド)
    • 112. バックエンドWWWサーバ(フロントエンド) バックエンドサーバ
    • 113. バックエンドWWWサーバ(フロントエンド) バックエンドサーバ
    • 114. バックエンドWWWサーバ(フロントエンド) バックエンドサーバ
    • 115. バックエンドWWWサーバ(フロントエンド) バックエンドサーバ
    • 116. バックエンド 静的コンテンツはWWWサーバ(フロントエンド) フロントエンドが直接処理 バックエンドサーバ
    • 117. Unicorn
    • 118. Unicornhttp://unicorn.bogomips.org/
    • 119. Unicornhttp://unicorn.bogomips.org/
    • 120. Unicornhttp://unicorn.bogomips.org/定番高速ダウンタイムなしで再起動可能worker1つにつき1リクエスト
    • 121. その他
    • 122. その他 Thin
    • 123. その他 Thin http://code.macournoyer.com/thin/
    • 124. その他 Thin http://code.macournoyer.com/thin/ Rainbows!
    • 125. その他 Thin http://code.macournoyer.com/thin/ Rainbows! http://rainbows.rubyforge.org/
    • 126. その他 Thin http://code.macournoyer.com/thin/ Rainbows! http://rainbows.rubyforge.org/ よく知りません
    • 127. あまり使わない
    • 128. あまり使わないmongrelWebrick
    • 129. あまり使わないmongrelWebrick 開発時のサーバとしては使う
    • 130. Passenger
    • 131. Passenger http://www.modrails.com/
    • 132. Passenger http://www.modrails.com/“mod_rails”バックエンドプロセスが不要基本的にApacheのみ立ち上がりが遅いメモリひかえめ
    • 133. フロントエンド
    • 134. フロントエンド 基本的に何でもOK
    • 135. フロントエンド 基本的に何でもOKApachenginxlighthttpd
    • 136. nginx
    • 137. nginx http://wiki.nginx.org/
    • 138. nginx http://wiki.nginx.org/
    • 139. nginx http://wiki.nginx.org/高速設定が楽Apacheのような細かいアクセス制御は不可能バックエンドに投げるだけなら最適
    • 140. Apache
    • 141. Apache
    • 142. ApacheRailsだけ動かすには大きすぎる他のコンテンツと共存するなら必須の場合もApacheを使うならPassengerを検討する
    • 143. データベース
    • 144. データベースMySQLPgSQLSqlite3
    • 145. データベース ActiveRecordが差を吸収するMySQLPgSQLSqlite3
    • 146. データベース ActiveRecordが差を吸収するMySQLPgSQLSqlite3 NoSQL
    • 147. memcached
    • 148. memcached参照系がほとんどであれば効果は出る他の方法で解決できるならするべきページキャッシュだけならVarnishの方が楽
    • 149. Varnish
    • 150. Varnishhttps://www.varnish-cache.org/
    • 151. Varnishhttps://www.varnish-cache.org/
    • 152. Varnishhttps://www.varnish-cache.org/透過型httpキャッシュサーバzero configでも動くパラメータやcookieごとキャッシュする
    • 153. Varnishhttps://www.varnish-cache.org/
    • 154. Varnishhttps://www.varnish-cache.org/
    • 155. Varnishhttps://www.varnish-cache.org/SSLを処理できないPOSTをGETに書き換えてしまうことがあるDSLがやや難解
    • 156. 構成例
    • 157. 構成例 nginx+unicorn+varnish
    • 158. 構成例 nginx+unicorn+varnish SSLあり nginx varnish unicorn
    • 159. 構成例 nginx+unicorn+varnish SSLあり nginx varnish unicorn SSLなし varnish nginx unicorn
    • 160. 構成例
    • 161. 構成例 apache+passenger
    • 162. 構成例 apache+passenger apache passenger
    • 163. 構成例 apache+passenger apache passenger apache+unicorn
    • 164. 構成例 apache+passenger apache passenger apache+unicorn apache unicorn
    • 165. 構成例
    • 166. 構成例 apache+nginx+unicorn
    • 167. 構成例 apache+nginx+unicorn apache nginx unicorn
    • 168. 構成例 apache+nginx+unicorn apache nginx unicorn apache+varnish+unicorn
    • 169. 構成例 apache+nginx+unicorn apache nginx unicorn apache+varnish+unicorn apache varnish unicorn
    • 170. 質疑応答
    • 171. 質疑応答if available?  Question.all.map(&:answer!)end
    • 172. ご清聴ありがとうございました

    ×