プログラミング的なSomething

プログラミング的なSomething

ITエンジニア(?)目線で生活・自転車・トレーニング話を綴ります

Rails

RSpecのbefore句の使い方メモ

イマイチわかってないのでbefore句のメモ before(:all)が実行されるのは最初の一回だけ。 before(:each)は各it句ごと before(:eachも:allもなし)は:eachした場合と同じでit句ごと ついでにafter句 after(:all)が実行されるのは振る舞いレベルで一回だけ。 af…

will_paginateによるページネーションの実装

Gemfileの編集 will_paginateとbootstrap-will_paginateをインストールします。 gem 'will_paginate', '3.0.3' gem 'bootstrap-will_paginate', '0.0.6' 例によってbundle installしておきます。 viewの編集 以下のように記載することで、will_paginateは、@…

FactoryGirlでたくさんのサンプルデータを作成する

FactoryGirlでひとつひとつデータを用意するのは大変 大変ですので一気に作成する場合の作例をメモります。 factory :user do sequence(:name) { |n| "Person #{n}" } sequence(:email) { |n| "person_#{n}@example.com"} ・ ・ ・ sequenceメソッドは引数に…

アセットパイプラインに関するメモ

アセットについて app/assets:アプリケーション固有のアセット lib/assets:開発チームにより作成されたアセット vender/assets:サードパーティのアセット スタイルシートやJavaScriptは1つのファイルにまとめた方が速度が出ます。 ただ、1つにまとめると…

before_filterを使用した認可の定義

特定の状態でしかアクションを許したくない場合 例えば、ユーザーが自分のアカウントにログイン場合のみに、そのユーザー情報を書き換える操作を許す。等、認可にかかわるbefore_filterメソッドの使い方をまとめます。 早速コード ごくごくシンプルに書けま…

editアクションとupdateアクションの認可に関して

editアクションとupdateアクションと認可の関連性 RESTfulなルーティングを実行している場合、レコード編集ではeditとupdateのアクションが発生します。 ブラウザでは、editの操作をテストできますので、認可の設定が活きているかの判定ができますが、update…

Railsでのサインイン・サインアウトの実装

サインインを永続化する サインインを永続化して、サインアウトしたときにセッションを削除するシステムを考えます。 cookieと認証のためのモジュールであるSessionsHelperを用います。 SessionsHelperモジュールをアプリケーションコントローラにインクルー…

RESTfulなルーティングで必要なアクションだけ指定するresourcesのonlyオプション

resourcesのonlyオプション route.rbに以下のように書けばRESTfulなルーティングが自動で割り当てられます。 resources :users でもそんなに要らないじゃん?index,new,create,show,edit,update,destroy全部は要らない場合。 resources :users, :only[:new,:…

Factory Girlを使用してデータベースにデータを読み込ませる

Factory Girl 恥ずかしながら、いままでテストに使用するデータはデータマッパーを使ったスクリプトを作成して対処していました。 Factory Girlでは簡単に登録できるんですね。RSpecを使用する際に親和性が高いみたいです。 何はともあれGemfileを書いてbund…

RailsにおけるValidationの処理をまとめてみた

Validationのお作法をまとめてみました バリデーションの基本的なパターンは存在性、長さ、フォーマット、一意性の確認となります。 整理のため、これら4つの処理をRailsで行う際のお作法をまとめてみます。テストコードも最後に付記しています。 存在性の検…

matchを使ったroute.rbの記載

config/routes.rbの編集 ルーティングの記述は、Railsの流儀に従うと以下のように書き換える必要がある。 get ‘static_pages/help' 例えば、上記のようなルートを書いていると、リンク作成時に都度

パーシャルを用いてコードの重複をなくす

パーシャルの使い方を整理します。 headrerとかfooterとかタグ情報を書くのがとにかく嫌い。重複なんて大嫌いなのでパーシャルを使って重複をなくします。「パーシャル」って言葉でひっかけることができなくて、いままで恥ずかしながら知らない概念でした。 …

RSpecのlet関数を使ってコードの重複を排除する

Ruby on Rails チュートリアル、3章にしてテスト駆動の話が出てくるので初学者が恐れおののいている(だって罵詈雑言が飛んで来るじゃないですか)テストの書き方を学べてとても良いと思います。 というわけで、RSpecの重複を排除するlet関数を書いてみます…

has_manyとbelong_toの関連付け

例によってRuby on Rails チュートリアルです。2章のモデルの関連付けをメモします。 関連付け苦手なので出会ったそばから書き留めておきます。 class User < ActiveRecord::Base attr_accessible :email, :name has_many :microposts end class Micropost <…

Gemfileに記載されているrakeを使用するためのコマンド

例によってRuby on Rails チュートリアル読んでます。 http://railstutorial.jp/ Gemfileに記載されたrakeを使う場面があったのでメモ bundle exec rake db:migrate rakeを実行する前に「bundle exec」を接頭につけます。 その他 bundle exec rake -T db rak…

Ruby on Rails チュートリアルのGitの解説がわかりやすかったので個人的まとめ

普段Git等さわらないので操作をすぐに忘れてしまいがちなので個人的にまとめ。 ブランチの作成 git checkout -b <branch-name> -bオプションを入れれば作成したブランチにcheckoutした状態で作成が済みます。 拡張子の変更 git mv README.rdoc README.md コミット git com</branch-name>…

Railsでチェックボックスを作る手順

チェックボックスを作りたい。調べてみると少し複雑な様子。持っている書籍にも詳しくは書かれていなかったので調べてみました。チェックした項目が複数だった場合にはそれがわかるよう、例えば配列なりハッシュで返してくれるよう作ります。今回はハッシュ…

twitter-bootstrap-railsでハマった

ハマりました。 twitter-bootstrap-railsをインストールしたあとにrakeすると以下のようなエラーが。これではどうしようもない。 undefined method `less' for # /Users/yonetin/.rvm/gems/ruby-1.9.3-p125@soba1/gems/railties-3.2.3/lib/rails/railtie/con…

link_toヘルパーの構文で画像にリンクを貼る

タイトルの通り。画像にリンクを貼る方法です。 <%= link_to book do %> <%=image_tag book.image_url(:thumb).to_s %> <% end %> 参考としてる技術書にも載っていなかったのでメモ。

carrierwaveを使った画像アップロード機能の実装

最近はRailsをさわっています。 そこでcarrierwaveを使用した画像アップロード機能を実装したのでメモ。scaffolding機能で基本的な部分は実装されていることを前提として話を勧めます。 まずはgemをアプリケーションに追加します。 gem 'carrierwave' bundle…