Ruby on Rails
前回Herokuへのデプロイ手順を確認したので、チュートリアルにあったサンプルアプリを参考に試作アプリをデプロイしてみる。github.com Rubyのバージョン チュートリアルではRuby 2.2.3でやっていたので、バージョンを2.2.3に変更しておく。
これまでに試作したアプリを公開するためにHeroku(発音はヘロク派が多いのかな)をデプロイ先として試してみる。 アプリの実行環境とデータベースを調べてみたが、お試しアプリ程度であれば無料枠内でできそうな感じ。 Dynos : Free 512 MB RAM 1 Web/1 Wor…
今までテンプレートエンジンはデフォルトのERBを使用していたが、HamlやSlimといった別のテンプレートエンジンがあるので変更してみる。 Haml、Slimのどちらにするかだが、下記サイトの比較表によるとSlimの方が良さそうなのでSlimを試してみる。 Railsのテ…
groupdateというgemを使おうとしたらSQLite3はサポートしていないとのこと。今後、似たような状況が発生すると思われるのでDBをSQLite3からPostgreSQLに変更してみる。 PostgreSQL 9.4のインストール 下記ページを参考にVagrant上のCentOS 6.6(64bit)にPostg…
Railsで簡単にグラフを描画してみたいのでgemを調べてみたところ下記gemがヒットした。Highcharts, Google Charts, Gruffといったライブラリが使えるらしい。 GitHub - ankane/chartkick: Create beautiful JavaScript charts with one line of Ruby GitHub …
github.comGuard::LiveReloadというgemを使用すればView関連のファイルを変更したときにブラウザを自動でリロードすることができる。 guard-livereloadのインストール Gemfileに下記行を追加してbundle installする。 group :development do gem 'guard' gem…
github.comGuard::Bundlerを使えばGemfileを変更したときに自動でbundle installしてくれるようになるので地味に便利。 Gemfileに下記行を追加して手動でbundle installする。 group :development do gem 'guard' gem 'guard-bundler', require: false end
Guardを使えばいろいろな処理が自動で実行できることがわかったので有名なプラグインを調べてみる。 List of available Guards · guard/guard Wiki · GitHub GithubのGuardのWikiページ。利用可能なプラグインのリストだがアルファベット順なのでどれが人気…
github.comRuboCopとRails Best Practicesに似たようなもので、Brakemanというセキュリティチェックに特化したgemがあるので試してみる。 Brakemanのインストール Gemfileに下記行を追加してbundle installする。 group :development do gem 'brakeman', req…
Rails Best Practices - Rails Best Practices Rails Best PracticesというRailsのベストプラクティスがまとめられているサイトがあって、コードがそのベストプラクティスに沿っているかをチェックしてくれるrails_best_practicesというgemがあるので試して…
RuboCopで静的コード解析ができるようになったが、手動で実行するのは面倒だし忘れるのでGuardで自動実行する方法を試してみる。 Guardのインストール github.comGuardはファイルやディレクトリの変更を監視して、さまざまな処理を自動化するgemで、プラグイ…
github.comRuboCopというgemを使用すると静的コード解析が行えるようになる(READMEの冒頭にロボコップのセリフが書いてあるようにRoboCopとRubyをかけているのね)。 ベースになっているスタイルガイドは下記ページ(日本語訳)から確認できる。github.com
development環境でログを見てみると以下のようなログが複数行出力されている。これはアセットパイプラインに関するログで、場合によっては邪魔なのでgemで出力しないようにしてみる。 Started GET "/assets/jquery_ujs.self-ca5248a2fad13d6bd58ea121318d642…
Bulletを使用していたら下図のようなメッセージが表示された。どうやら原因は下記ビューのartist.songs.sizeとしている部分で、関連するモデルの件数を計算するためにSELECT COUNT(*)をデータの数だけ実行してしまっている。 … <% @artists.each do |artist|…
Bulletの設定 github.comN+1問題を検出するためにBulletというgemを試してみる。 Gemfileに下記行を追加してbundle installする。 group :development, :test do gem 'bullet' end
github.com多対多のリレーションがあるモデルに対してビューを変更したら大量のSQL文が実行されるようになったので、まず現状を確認してみる。 rack-mini-profilerというgemを追加すると簡単なパフォーマンス計測ができるようになるのでこれを使用してみる。…
Artistモデルを作成し、SongモデルとArtistモデルの間に多対多のリレーションを作成したので、コントローラとビューも更新する。 最初に下記コマンドでひな形を作成する。今回はArtistの一覧を表示するindexページとArtist個別のshowページを作成する。 $ ra…
wonderwall.hatenablog.com多対多のリレーションを作成したのでseed-fuでデータを追加してみる(と言っても使い方はこの前と特に変わらない)。 Songモデルに対しては過去にデータを追加しているので、Artistモデルと中間テーブルのSongArtistに追加するデー…
複数のモデルを作成したのでrails-erdを使用してER図を出力してみる。 Gemfileに下記行を追加してbundle installする。 group :development, :test do gem 'rails-erd' endER図を出力するコマンドを実行する。 $ rake erd Loading application environment..…
これまでにSongモデルを作成しているが、今度はArtistモデルを作成する。 Songは"featuring"などで複数のArtistが関わっており、逆にArtistは複数のSongを持っているため、これらのモデルに多対多のリレーションを作成する。 Artistモデルの作成 まず、Artis…
github.com検索フォームのコードの記述量が多いので何かよい方法がないか調べてみたところ、simple_formというgemを使用するとフォームが簡単に作成できるようなので試してみる。 まずGemfileに下記行を追加してbundle installする。 gem 'simple_form'次にg…
Ransackにより検索機能を追加できたが、Ransackではテーブルのソート機能も追加できるようなので試してみる。 使い方はビューファイルのthタグ内をsort_linkヘルパーを使用して書き換えればよい。 <th><%= sort_link(@q, :title) %></th> これでヘッダが図のようにク…
github.comRailsで検索機能を追加するにはRansackを使用するのがよいらしいので試してみる。 Gemfileに下記行を追加してbundle installする。 gem 'ransack'まずコントローラのapp/controllers/songs_controller.rbを編集する。 class SongsController < App…
github.comSpringというRails application preloaderを使用すると、railsやrakeコマンドの起動が高速化できる。 Rails 4.1以降では標準で組み込まれているため知らず知らずに使用していたようだ。確かにGemfileには group :development, :test do … gem 'spr…
2,500件分のデータを追加したのはよいが、アプリで表示してみると1ページに2,500件分全てが表示されてしまうのでページネーション機能を追加する。 kaminari 有名なページネーション機能のgemはkaminariらしいので、Gemfileに下記行を追加してbundle install…
GitHub - mbleigh/seed-fu: Advanced seed data handling for Rails, combining the best practices of several methods together. Gemfileに下記行を追加してbundle installする。 gem 'seed-fu', '~> 2.3'まずディレクトリとファイルを作成する。 $ mkdir …
追加したいデータをCSVファイルとして出力したのでrake db:seedコマンドを使ってデータを追加してみる。 最初にこれまでに追加したデータを削除しておく。 $ ./bin/rails c Loading development environment (Rails 4.2.3) [1] pry(main)> Song.count (0.2ms…
Bootswatchで見た目はよくなったがデータ数が少ないので、ここからはデータを増やす作業をする。 rails consoleで1個1個追加なんてしていられないので、NokogiriでWikipediaのページをスクレイピングした結果をCSVファイルに出力してまとめて追加する。 Noko…
手っ取り早く見た目を良くするならBootstrapだが、今回は色々なテーマが選択できるBootswatchを使用してみる。 Bootswatch: Free themes for Bootstrap RailsでBootswatchを使うgemとしては、 GitHub - maxim/bootswatch-rails: Bootswatches converted to S…
rails consoleで追加した曲のデータをアプリで表示してみる。 コントローラの編集 まず下記コマンドでSongsコントローラのひな形を作成する。 $ ./bin/rails g controller Songs index create app/controllers/songs_controller.rb route get 'songs/index' …