もた日記

くだらないことを真面目にやる

Ruby on Rails

Railsメモ(33) : アプリをHerokuへデプロイする

前回Herokuへのデプロイ手順を確認したので、チュートリアルにあったサンプルアプリを参考に試作アプリをデプロイしてみる。github.com Rubyのバージョン チュートリアルではRuby 2.2.3でやっていたので、バージョンを2.2.3に変更しておく。

Railsメモ(32) : Herokuへのデプロイ手順を確認する

これまでに試作したアプリを公開するためにHeroku(発音はヘロク派が多いのかな)をデプロイ先として試してみる。 アプリの実行環境とデータベースを調べてみたが、お試しアプリ程度であれば無料枠内でできそうな感じ。 Dynos : Free 512 MB RAM 1 Web/1 Wor…

Railsメモ(31) : テンプレートエンジンをERBからSlimに変更する

今までテンプレートエンジンはデフォルトのERBを使用していたが、HamlやSlimといった別のテンプレートエンジンがあるので変更してみる。 Haml、Slimのどちらにするかだが、下記サイトの比較表によるとSlimの方が良さそうなのでSlimを試してみる。 Railsのテ…

Railsメモ(30) : DBをSQLite3からPostgreSQLに変更する

groupdateというgemを使おうとしたらSQLite3はサポートしていないとのこと。今後、似たような状況が発生すると思われるのでDBをSQLite3からPostgreSQLに変更してみる。 PostgreSQL 9.4のインストール 下記ページを参考にVagrant上のCentOS 6.6(64bit)にPostg…

Railsメモ(29) : Chartkickで簡単にグラフを描画する

Railsで簡単にグラフを描画してみたいのでgemを調べてみたところ下記gemがヒットした。Highcharts, Google Charts, Gruffといったライブラリが使えるらしい。 GitHub - ankane/chartkick: Create beautiful JavaScript charts with one line of Ruby GitHub …

Railsメモ(28) : Guard::LiveReloadでView変更時にブラウザを自動リロードする

github.comGuard::LiveReloadというgemを使用すればView関連のファイルを変更したときにブラウザを自動でリロードすることができる。 guard-livereloadのインストール Gemfileに下記行を追加してbundle installする。 group :development do gem 'guard' gem…

Railsメモ(27) : Guard::Bundlerでbundle installを自動実行する

github.comGuard::Bundlerを使えばGemfileを変更したときに自動でbundle installしてくれるようになるので地味に便利。 Gemfileに下記行を追加して手動でbundle installする。 group :development do gem 'guard' gem 'guard-bundler', require: false end

Railsメモ(26) : Guardの有名なプラグインを調べてみる

Guardを使えばいろいろな処理が自動で実行できることがわかったので有名なプラグインを調べてみる。 List of available Guards · guard/guard Wiki · GitHub GithubのGuardのWikiページ。利用可能なプラグインのリストだがアルファベット順なのでどれが人気…

Railsメモ(25) : Brakemanでセキュリティチェックする

github.comRuboCopとRails Best Practicesに似たようなもので、Brakemanというセキュリティチェックに特化したgemがあるので試してみる。 Brakemanのインストール Gemfileに下記行を追加してbundle installする。 group :development do gem 'brakeman', req…

Railsメモ(24) : Rails Best Practicesでコードの品質をチェックする

Rails Best Practices - Rails Best Practices Rails Best PracticesというRailsのベストプラクティスがまとめられているサイトがあって、コードがそのベストプラクティスに沿っているかをチェックしてくれるrails_best_practicesというgemがあるので試して…

Railsメモ(23) : GuardでRuboCopを自動実行する

RuboCopで静的コード解析ができるようになったが、手動で実行するのは面倒だし忘れるのでGuardで自動実行する方法を試してみる。 Guardのインストール github.comGuardはファイルやディレクトリの変更を監視して、さまざまな処理を自動化するgemで、プラグイ…

Railsメモ(22) : RuboCopで静的コード解析を行う

github.comRuboCopというgemを使用すると静的コード解析が行えるようになる(READMEの冒頭にロボコップのセリフが書いてあるようにRoboCopとRubyをかけているのね)。 ベースになっているスタイルガイドは下記ページ(日本語訳)から確認できる。github.com

Railsメモ(21) : quiet_assetsでアセットパイプラインのログを出力しないようにする

development環境でログを見てみると以下のようなログが複数行出力されている。これはアセットパイプラインに関するログで、場合によっては邪魔なのでgemで出力しないようにしてみる。 Started GET "/assets/jquery_ujs.self-ca5248a2fad13d6bd58ea121318d642…

Railsメモ(20) : counter_cultureでカウント値をキャッシュする

Bulletを使用していたら下図のようなメッセージが表示された。どうやら原因は下記ビューのartist.songs.sizeとしている部分で、関連するモデルの件数を計算するためにSELECT COUNT(*)をデータの数だけ実行してしまっている。 … <% @artists.each do |artist|…

Railsメモ(19) : BulletでN+1問題を検出する

Bulletの設定 github.comN+1問題を検出するためにBulletというgemを試してみる。 Gemfileに下記行を追加してbundle installする。 group :development, :test do gem 'bullet' end

Railsメモ(18) : rack-mini-profilerで簡単なパフォーマンスを計測する

github.com多対多のリレーションがあるモデルに対してビューを変更したら大量のSQL文が実行されるようになったので、まず現状を確認してみる。 rack-mini-profilerというgemを追加すると簡単なパフォーマンス計測ができるようになるのでこれを使用してみる。…

Railsメモ(17) : コントローラとビューを更新する

Artistモデルを作成し、SongモデルとArtistモデルの間に多対多のリレーションを作成したので、コントローラとビューも更新する。 最初に下記コマンドでひな形を作成する。今回はArtistの一覧を表示するindexページとArtist個別のshowページを作成する。 $ ra…

Railsメモ(16) : seed-fuで多対多のリレーションにデータを追加する

wonderwall.hatenablog.com多対多のリレーションを作成したのでseed-fuでデータを追加してみる(と言っても使い方はこの前と特に変わらない)。 Songモデルに対しては過去にデータを追加しているので、Artistモデルと中間テーブルのSongArtistに追加するデー…

Railsメモ(15) : rails-erdでER図を出力する

複数のモデルを作成したのでrails-erdを使用してER図を出力してみる。 Gemfileに下記行を追加してbundle installする。 group :development, :test do gem 'rails-erd' endER図を出力するコマンドを実行する。 $ rake erd Loading application environment..…

Railsメモ(14) : 多対多のリレーションをhas_many throughで作成する

これまでにSongモデルを作成しているが、今度はArtistモデルを作成する。 Songは"featuring"などで複数のArtistが関わっており、逆にArtistは複数のSongを持っているため、これらのモデルに多対多のリレーションを作成する。 Artistモデルの作成 まず、Artis…

Railsメモ(13) : simple_formでRansackの検索フォームを簡単に作成する

github.com検索フォームのコードの記述量が多いので何かよい方法がないか調べてみたところ、simple_formというgemを使用するとフォームが簡単に作成できるようなので試してみる。 まずGemfileに下記行を追加してbundle installする。 gem 'simple_form'次にg…

Railsメモ(12) : Ransackでテーブルのソート機能を追加する

Ransackにより検索機能を追加できたが、Ransackではテーブルのソート機能も追加できるようなので試してみる。 使い方はビューファイルのthタグ内をsort_linkヘルパーを使用して書き換えればよい。 <th><%= sort_link(@q, :title) %></th> これでヘッダが図のようにク…

Railsメモ(11) : Ransackで検索機能を追加する

github.comRailsで検索機能を追加するにはRansackを使用するのがよいらしいので試してみる。 Gemfileに下記行を追加してbundle installする。 gem 'ransack'まずコントローラのapp/controllers/songs_controller.rbを編集する。 class SongsController < App…

Railsメモ(10) : Springでrails, rakeコマンドを高速化する

github.comSpringというRails application preloaderを使用すると、railsやrakeコマンドの起動が高速化できる。 Rails 4.1以降では標準で組み込まれているため知らず知らずに使用していたようだ。確かにGemfileには group :development, :test do … gem 'spr…

Railsメモ(9) : kaminariでページネーション機能を追加する

2,500件分のデータを追加したのはよいが、アプリで表示してみると1ページに2,500件分全てが表示されてしまうのでページネーション機能を追加する。 kaminari 有名なページネーション機能のgemはkaminariらしいので、Gemfileに下記行を追加してbundle install…

Railsメモ(8) : seed-fuでデータを追加する

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 …

Railsメモ(7) : rake db:seedでデータを追加する

追加したいデータをCSVファイルとして出力したのでrake db:seedコマンドを使ってデータを追加してみる。 最初にこれまでに追加したデータを削除しておく。 $ ./bin/rails c Loading development environment (Rails 4.2.3) [1] pry(main)> Song.count (0.2ms…

Railsメモ(6) : Nokogiriでスクレイピングする

Bootswatchで見た目はよくなったがデータ数が少ないので、ここからはデータを増やす作業をする。 rails consoleで1個1個追加なんてしていられないので、NokogiriでWikipediaのページをスクレイピングした結果をCSVファイルに出力してまとめて追加する。 Noko…

Railsメモ(5) : Bootswatch(Bootstrap)で見た目を変更する

手っ取り早く見た目を良くするならBootstrapだが、今回は色々なテーマが選択できるBootswatchを使用してみる。 Bootswatch: Free themes for Bootstrap RailsでBootswatchを使うgemとしては、 GitHub - maxim/bootswatch-rails: Bootswatches converted to S…

Railsメモ(4) : コントローラとビューを作成する

rails consoleで追加した曲のデータをアプリで表示してみる。 コントローラの編集 まず下記コマンドでSongsコントローラのひな形を作成する。 $ ./bin/rails g controller Songs index create app/controllers/songs_controller.rb route get 'songs/index' …