Ruby on Railsを仕事にできる実践型スクール StartupLaboアカデミー プログラミングスクールや独学でRuby on Railsを学習された方の為の実践指導型スクール
RailsでFat ControllerになったらForm Classを作れ,という記事はあちこちで見るのですが,今一つ参考になるような実装があまり見つからなかったので記事にしてみました. Rails 3.2.13,Ruby 2.0.0系で動作確認済みです. Fat Controller問題 Railsで特に何も考えずに検索機能を作っていると,検索ロジックでcontrollerが膨らんできてしまうと思います(Fat Controller問題). 例えば,検索フォームの内容として最初は名前だけで検索するとのことで, HogeController < ApplicationController def index @hoges = Hoge.where("name LIKE ?", "%#{params[:name]}%") end end と書いていたのが,そのうちメールアドレスや住所でも絞
本当にいっっつも忘れる(T-T) ので、よく使うコマンドだけメモ なお、網羅的な解説は以下のサイトがよくまとまっている! railsコマンド(rails) - Railsドキュメント はじめに 全てのrailsコマンドは-h (or --help)オプションでヘルプが見れる $ rails -h $ rails generate -h $ rails generate scaffold -hgenerateのショートカットはg $ rails g scaffoldgenerateは-p, [--pretend]でドライランできる $ rails generate scaffold AdminUser name:string mail:string -pgenerateで生成したファイルを削除するにはdestory $ rails destroy AdminUser 主要generateコマ
Rails4に管理画面用テンプレートのSB-Admin2を入れました。 bootstrapとかfontはgemで入れるようにしたので、必要なgemとかをまとめます。 startbootstrap.com SBAdminのファイル群をダウンロードしてきたら、必要なcssやjsファイルは vendor/assets/の中のstylesheetsとjavascriptsにそれぞれ入れます。 bootstrapとfontはgemで入れます。 bootstrap-sass font-awesome-rails Gemfileには gem 'bootstrap-sass' gem 'font-awesome-rails' と記述します。 application.jsは //= require jquery //= require jquery_ujs //= require turbolinks //
メモ。 別にRailsに限ったことではなくて、Webアプリケーションフレームワークとかを使っていて、テンプレートファイルで使ってる変数をJavaScriptから参照するやり方。 検索結果をlocalStorageでキャッシュしておきたいなど、いくつかの場面で必要になるかと思います。 (例)Viewファイルで、 <script> var piyo_id = <%= @piyo.id %>; </script> <div id="hoge"> <%= render "hoge/hoge_piyo", piyo: @piyo %> <!-- いろいろ --> </div> って書くしかないのかと思ったけど、もっといい方法があった。 そう、HTML5の独自データ属性(data-* こんなやつ)。 Viewファイルで <div id="hoge" data-hoge-id="<%= @piyo.id
react-railsというReact.jsをRailsに簡単に統合できるgemを使い、React.jsをサーバーレンダリングする方法を説明します。 サーバーレンダリングすることで、初期値をHTMLの初期レンダー時に渡せるようになるので、ロード中による画面のばたつきや、ロード中といった表示をなくせます。 RailsでReactを使ってメッセージボックスアプリを作成 - Rails Webookをベースに説明しています。 また、この記事のソースコードは https://github.com/nipe0324/rails_samples/tree/master/react_server_rendering_test です。 目次 RailsでReactコンポーネントをレンダーする Reactコンポーネントをサーバーレンダリングする コントローラーでReactコンポーネントをレンダーする 動作確
jbuilderを使いはじめたのでメモ jbuilderとは jsonのテンプレートエンジンです。 xxx.json.jbuilderファイルにDSLを記述するとJSONにして返してくれるという物。 ファイルに記述するので難しいjson形式を返す時とかは便利そうです。 DHHが作ったもので、Rails4からはデフォルトで使えるようになっているようです。 jbuilderを使うための設定 Rails4では特に設定をせずに利用できます。 views以下にxxx.json.jbuilderファイルを作ってlocalhost:3000/items.jsonにアクセスすればjson形式のレスポンスが返ってくれます。 jbuilderの書き方 Modelを使わない書き方 一番シンプルな形式。 json.set! :key, 'value' # {"key":"value"} 入れ子はこんな感じ。 js
Rail 5でdraper(ActiveRecordをdecorateしてくれるgem)を使おうと思ったら、少しつっかかったのでメモ。 普通に、draperと書くと、 gem 'draper' 2.1.0がinstallされてしまう。 そうすると、rails consoleとかしたときに、 /Users/user_name/.rbenv/versions/2.2.4/lib/ruby/gems/2.2.0/gems/draper-2.1.0/lib/draper.rb:5:in `require': cannot load such file -- active_model/serializers/xml (LoadError) のエラーが出る。 これは、 active_model/serializers/xmlがgem化されて、デフォルトではインストールされなくなったからである。 参考:
今回はRubyの代表的なテンプレートエンジン「haml」を使って、RailsのViewを書き換えてみます。また、Hamlをすでに使っている人向けにも適したTips的なチートシートを作りました! 🍄 RailsのViewとは?Railsでは次のようなMVC(Model, View, Controller)のしくみ使ってWebアプリケーションを作っていきます。 Model(モデル): 主にデータベース(MySQLやPostgreSQL)とのやりとりを担当 View(ビュー): 主にWebブラウザのhtmlの表示を担当 Controller(コントローラ): View(ビュー)とModel(モデル)との間の橋渡しを担当 今回はブラウザで簡単に確認できるViewの部分を変更してみます。 😎 Hamlとは?『Haml』とは簡単にいうとHTMLをより簡単に書くためのビューテンプレートエンジンです。
こんにちは、RuboCop大好き!Pockeです。 先日、RuboCopのバージョン0.44.0、0.44.1がリリースされました。 https://github.com/bbatsov/rubocop/releases/tag/v0.44.0 https://github.com/bbatsov/rubocop/releases/tag/v0.44.1 0.44.0 には、多数の機能追加やバグ修正が含まれています。また、0.44.1は1件のバグ修正を含んだhotfixリリースです。 このリリースには、SideCIメンバーによるPull Requestも5個含まれています。 今日はそのCHANGELOGから、気になる新Copを見ていきましょう。 新規Cop追加 Copとは、RuboCopにおいてひとつのルールを指す言葉です。例えば、「インデントが正しいかチェックする」「非推奨メソッドを使っ
Railsで生産性を高めてくれる「Asset Pipeline(アセットパイプライン)」を理解する|【CoEdo.rb】Ruby / Ruby on Rails ビギナーズ勉強会 第4回 2015年4月19日に開催された、「【CoEdo.rb】Ruby / Ruby on Rails ビギナーズ勉強会 第4回」での発表資料です。 ショートセッション(10分程度)で発表しました。 初心者向けに、Asset Pipeline(アセットパイプライン)はどのようなものか、大まかな機能の説明をしました。 Asset Pipelineにより、Sass、CoffeeScriptのコーディングに集中できます。 今まで手間だったことをほぼ自動で行ってくれるので便利です。 Sprockets(スプロケッツ)のgemとして提供されていて、development環境・production環境によって動作もコントロ
投稿推進部の外村(@hokaccha)です。 クックパッドブログの開発でRails上にECMAScript6などのモダンなJavaScript開発環境を導入した経験を元にノウハウを紹介したいと思います。 RailsはSprocketsというgemでJavaScriptやCSSをコンパイルする仕組みが提供されています。Sprocketsによるasset管理の仕組みは非常によくできており、AltJSのトランスパイルやファイルの結合、minifyなど、assetのコンパイルに必要な機能を一通り備えています。 しかし、JavaScriptにおけるモジュールの依存関係の解決や、ライブラリの管理などについてはモダンなJavaScript開発と乖離してきているのが現状です。そこで、Railsでも以下のようなことを実現できることを目標に環境を作りました。 ECMAScript6のシンタックスを使う モジュ
react-railsというReact.jsをRailsに簡単に統合できるgemを使い、React.jsについて説明します。 次のような画面をReact.jsで実装し、Reactとサーバ(Rails)間でメッセージ一覧の取得や作成をできるようにします。 ソースコードはこちらです。 https://github.com/nipe0324/rails_samples/tree/master/react_test 目次 react-railsのインストール Reactのコンポーネントの表示 メッセージボックスの概要 メッセージボックスのリストを作成 メッセージフォームを作成 サーバーサイド(Rails)との連携 動作確認 Ruby 2.2.0 Rails 4.2.3 react-rails 1.4.2 react 0.14.2 0. React.jsとはReact.jsはMVCフレームワークでい
Photo by Gonzalo Baeza | Flickr - Photo Sharing! RailsでJSONを返すAPIを作成し、また、APIのテスト方法も説明します。 JSONを返すAPIは、RailsのActiveSupportより拡張されたto_jsonメソッドとDMMが開発したjbuilderというGemを使います。 APIのテストにはおなじみのRSpec3を使います。 動作確認 Rails 4.1.7 jbuilder 2.2.6 rspec-rails 3.1.0 factory_girl 4.5.0 目次 1. 前提条件 2. APIの作成 2.1. 1つのコントローラーでHTMLやJSONを返すAPI 2.2. JSONのみを返すAPI 2.3. APIのバージョニング 3. APIのテスト 3.1. テストファイルの準備 3.2. 一覧(index)APIのテス
こんにちは。いるかさんです。今回は技術系の記事となります! 社内のとあるRailsプロジェクトで、「ES6を使おうよ!」という動きが高まっています。 (ES6については、よしこさんのスライドが大変分かりやすいので、ぜひご一読ください。) 主に 「Coffee && JSX な lint がない」 という点と、 「Coffeeを使っていくよりES6を使うようにした方が余分な学習コストが減るし今後に生きる」 という点で検討されていました。 しかし、現在はCoffeeScriptで開発しているため、一度にES6へ置き換えるのは難しいです。 そこで、以下の要件を満たすように環境を整えました。 CoffeeScript+JSXは今までどおり使うことができる ES6を使うことができる ES6 で JSX を書くことができる (Reactを利用しているため) CoffeeScriptからES6やES6な
RailsでJSONを返すAPIアプリケーションを3週間ぐらい試行錯誤しながら作成しています。少しですがノウハウも溜まってきたのでここにまとめておこうと思います。 今回のアプリケーションの構成は大体次のようになっています。 RailsはAPIサーバ(一般公開するAPIではなくSPA(シングルページアプリケーション)のサーバとしてJSONを返却する。HTMLは返却しない) クライアントサイドはAngularJSで画面遷移、Viewの描画まで管理する DBはMySql、Session管理はRedis(まだローカル開発なのであまり関係無い) チームはサーバサイド、クライアントサイドで完全に分担して二人で作成しています(自分はサーバサイド担当)。 このブログエントリーでは次のことを書きます。 APIのルーティングの設定(JSONのみ返すようにする方法) Session管理(CSRFトークンの受け渡
1. マスタデータの扱いについて rake db:seedするたびにデータが挿入される。 idをインクリメントで自動挿入するときにめんどくさいことになる。 最初に挿入するマスターデータにassociationを張っている場合は、何回も生成してidが更新されると致命的なのでなんとかしたい。 以前はmigrationファイルに書く方法が主流だったみたいだけど、このseeds.rbが2.3.4で追加された理由は「スキーマの生成とDBへの実データの投入は書くところ分けようぜ!」って話だったわけだしmigrationファイルに書いちゃったらマスタ変更したいときに結構無理ゲーになってきそうな感じはある。 方法としては、seed-fuを使うか、seeds.rbで毎回シーケンスをdeleteしてからデータを挿入し直すようにするか seed-fuはdb/fixturesという新しいディレクトリを最低限作らな
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く