Successfully reported this slideshow.

Rails勉強会資料

865 views

Published on

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Rails勉強会資料

  1. 1. MTGデッキ構築 アプリを作った
  2. 2. 自己紹介 • サーバーサイドエンジニア • 普段は主にJavaを書いてます • Rubyは個人的に使うスクリプトをたまに書く程度 • 最近はchefを書いてます
  3. 3. アプリをつくってみた
  4. 4. Railsを使えば まるで魔法をつかっているかのように 簡単にアプリを作れる
  5. 5. そんなわけなかった∑( ̄Д ̄;)
  6. 6. Raisは僕を魔法使いにはしてくれない
  7. 7. ただ、Railsを使うとアプリ を作るのが少し楽になる! 作るのが楽しくなる!
  8. 8. MTG DECK BUILDER
  9. 9. Railsを使ってもデザイン能力はあがらなかった
  10. 10. ここから本題
  11. 11. テーブルの管理が簡単
  12. 12. migrationを使ったテーブルのバージョン管理 テーブルにカラムを追加したり、テーブルからカラムを削除する テーブルをある時点の状態にする テーブルを最初から作り直す 自由にテーブル変更ができる。 ただし、既にpushした定義ファイルを修整してテーブルを更新するのはNG
  13. 13. Modelがきれい テーブルの各カラムに対応する変数をモデルない で再定義するなんて無駄なことをやらない Playの例 @Entity public class User extends Model { public String email; public String password; public User(String email, String password, String fullname) { this.email = email; this.password = password; } }
  14. 14. ちなみに Railsではtypeというカラム名は予約語となっているらしく、 使うことが出来ません。 おこられます。 しかもViewを表示するときになってはじめて気づかされま す。 The single-table inheritance mechanism failed to locate the subclass: ' インスタント'. This error is raised because the column 'type' is reserved for storing the class in case of inheritance. Please rename this column if you didn't intend it to be used for storing the inheritance class or overwrite MstCard.inheritance_column to use another column for that information. カラム名として使えない名前は他にもあるので、気をつけてください!
  15. 15. URLとアクションの紐付け が一カ所にまとまっている ので見やすい
  16. 16. 設定を省略してかける resources :mst_cards do collection do get 'search' end end earch_mst_cards GET mst_cards GET POST new_mst_card GET edit_mst_card GET mst_card GET PATCH PUT DELETE /mst_cards/search(.:format) /mst_cards(.:format) /mst_cards(.:format) /mst_cards/new(.:format) /mst_cards/:id/edit(.:format) /mst_cards/:id(.:format) /mst_cards/:id(.:format) /mst_cards/:id(.:format) /mst_cards/:id(.:format)
  17. 17. デフォルトの設定をそのままつかって いいわけでもない /mst_cards/search(.:format) さすがにこのURLだと、テーブル名がバレバレなのでセキュリ ティ的に不安 規約だけに頼らずに、状況に応じて自分で設定を書くように した方がよい!
  18. 18. Ajaxを簡単に使える
  19. 19. View リクエスト Action View レスポンス JSON
  20. 20. 特別な処理をほとんど書かないでいい Index.html.erb <%= button_to "増やす", {:controller => "user", :action => "add_card”, :id => card.card_id} , {:method => "POST", :remote => true} %> :remote => trueをつかうことで、linkやformの通信を非同期で行える。 :data-typeを指定すれば、レスポンスをhtml形式で取得することも可能
  21. 21. user_controller.rb def add_card #カードの所持数を増やす処理 respond_to do |format| format.js #renderを実行しない end end user/add_card.js.erb var dom = $(".card_count", "#card_<%= @user_card.card_id %>") var val = dom.text() val = Number(val) || 0 val = val+1 dom.text(val)
  22. 22. Index_htm.erb リクエスト user_control.rb add_cardアクション add_card.html.erb レスポンス Add_card.js.er b 変更を加える点 :remote => true を追加 出力をjsonに切り替える
  23. 23. ヘルパーメソッドを作って独自の表示をする
  24. 24. <%= apply_img_and_hbr card.mana %> application_helper.rbに定義 def apply_img_and_hbr (str) apply_mana_img(str_br).html_safe end #{}で囲まれた文字列をimgタグに置換する def apply_mana_img (str) str.gsub('{1}', mana_img("1")) .gsub(/{U}/, mana_img("U")) .gsub(/{X}/, mana_img("X")) .gsub(/{Tap}/, mana_img("Tap")) end def mana_img (word) options = {} options[:src] = "/images/#{word}.png" options[:alt] = "{#{word}}” tag("img", options) end
  25. 25. 最後に
  26. 26. Heroku • Herokuにアカウント登録 https://www.heroku.com/ • gitをインストール
  27. 27. • Githubにアカウント登録 https://github.com/ • GithubにSSH Keyを登録 サイト右上の「account setting」をクリック。 SSH Keysを選択します。 自分のSSH Keyを登録します。 • Githubにレポジトリを作成 サイト右上の「git a new repo」から新しいレポジトリを作成します。 レポジトリ名を入力して完了ボタンを押します。 登録完了画面に表示される「Push an existing repository from the command line」以下のコマンドを自分のPCで実行します。 git remote add origin [URL] git add . git commit –m “first commit” git push –u origin master
  28. 28. • Herokuにアプリケーションを登録 下記のサイトを参考にtoolbeltをインストールします。 https://toolbelt.heroku.com/ Getting Startに従ってHerokuにアプリの格納場所を作 成します。 .git/confiに以下の設定が追加されてればOK [remote "heroku"] url = [HEROKU_URL] fetch = +refs/heads/*:refs/remotes/heroku/*
  29. 29. 以下のコマンドを実行してHerokuにアプリを登録します。 git push heroku master ちなみに、Herokuではsqlite3とmysqlをサポートしていないた め、herokuにアップするときにはposgresqlを使うようにしま す。 Gemfile group :production do gem "pg" end group :development, :test do gem "sqlite3" end またHerokuでpostgresqlを使用す場合はHerokuの postgresqlプラグインをインストールする必要があります。 インストールはherokuのページから可能です。
  30. 30. • Herokuを再起動 Migrationの実行 heroku run rake db:migrate サーバの再起動 herokuk restart ブラウザで起動 heroku open ブラウザが起動して、アプリのページにアクセスします。
  31. 31. まとめ • MigrationをつかってDBのバージョン管理。 • URLとアクションの紐付けはroutes.rbで行う。必要に応じて 設定も書く。 • Ajaxの処理は簡単にかける。うまく設計すればアプリのAPI を提供することも 簡単に出来る。 • ヘルパーメソッドを自作すれば、様々な表示ができる。また 再利用したいメソッドを複数あつめてUtilityモジュールをつく ることもできる。

×