カテゴリー : Ruby

[Ruby] state_machine 入門

Rubyで、状態遷移を管理できる state_machine が便利!ということで参考サイトをメモ。

pluginaweek/state_machine · GitHub はてなブックマーク - pluginaweek/state_machine · GitHub

state_machineは何をしてくれるのだろう? – ザリガニが見ていた…。 はてなブックマーク - state_machineは何をしてくれるのだろう? - ザリガニが見ていた...。

Railsでstate_machineってgemの状態、イベントをDBから持って来て動的追加する調査: 麦汁三昧 はてなブックマーク - Railsでstate_machineってgemの状態、イベントをDBから持って来て動的追加する調査: 麦汁三昧

[Ruby on Rails] ページごとにtitleを変更する方法

Ruby on Rails でページごとにtitleを変更する方法をメモ。

■ ERB

<title><%= content_for?(:title) ? yield(:title) : "default title"%></title>

■ Haml

%title><
  - if content_for? :title
    = yield :title
    |デフォルトタイトル
  - else
    デフォルトタイトル

metaタグのdescriptionやkeywordsも同じように書けます。

■ app/views/layouts/application.html.haml

- if content_for? :meta_description
  - meta_description = yield :meta_description
- else
  - meta_description = 'default description'
%meta(content="#{meta_description}" name="description")
- if content_for? :meta_keywords
  - meta_keywords = yield :meta_keywords
- else
  - meta_keywords = 'default keywords'
%meta(content="#{meta_keywords}" name="keywords")

■ どこかの view

= content_for :meta_description do
  #{@item.description}
= content_for :meta_keywords do
  #{@item.name}
= content_for :title do
  #{@item.name}

[Ruby] 全文検索エンジンSolrを使うなら「sunspot」

Ruby とか Rails とかで全文検索エンジンSolrを使うなら「sunspot」ということで色々とメモ。

sunspot/sunspot はてなブックマーク - sunspot/sunspot

sunspotのチュートリアル意訳 – maeshimaの日記 はてなブックマーク - sunspotのチュートリアル意訳 - maeshimaの日記

結局、Rails 3.2 で 大量のデータを検索する場合、Sunspot な Solr が一番 いい感じ。という面白くないオチ。 | JAM☆ぱん はてなブックマーク - 結局、Rails 3.2 で 大量のデータを検索する場合、Sunspot な Solr が一番 いい感じ。という面白くないオチ。 | JAM☆ぱん

Will_Paginate with Sunspot – Ruby on Rails | What I Broke はてなブックマーク - Will_Paginate with Sunspot – Ruby on Rails | What I Broke

リファレンス

Module: Sunspot — Documentation for nuatt_sunspot (1.1.0.3) はてなブックマーク - Module: Sunspot — Documentation for nuatt_sunspot (1.1.0.3)

RSpec でテストするときの設定とか

RSpec and Sunspot · sunspot/sunspot Wiki はてなブックマーク - RSpec and Sunspot · sunspot/sunspot Wiki

Sunspot with RSpec はてなブックマーク - Sunspot with RSpec

Install And Test SOLR+Sunspot In Your Rails+RSpec Project | DZone はてなブックマーク - Install And Test SOLR+Sunspot In Your Rails+RSpec Project | DZone

sunspot-rails-tester – maeshimaの日記 はてなブックマーク - sunspot-rails-tester - maeshimaの日記

justinko/sunspot-rails-tester · GitHub はてなブックマーク - justinko/sunspot-rails-tester · GitHub

[Ruby] ファイルアップロードなら「CarrierWave」

Ruby でファイルアップロードなら「CarrierWave」というGemが便利みたいです。

Rackに対応しているため、Rails、SinatraなどRackベースのRubyアプリケーションで動作し、ActiveRecord、DataMapper、 Mongoidなど多くのORMをサポートしています。

jnicklas/carrierwave · GitHub はてなブックマーク - jnicklas/carrierwave · GitHub

ASCIIcasts – “Episode 253 – CarrierWaveでファイルのアップロード” はてなブックマーク - ASCIIcasts - “Episode 253 - CarrierWaveでファイルのアップロード”

Railsでcarrierwaveを使って画像ファイルのアップロード はてなブックマーク - Railsでcarrierwaveを使って画像ファイルのアップロード

.gitignore

# CarrierWave
/public/uploads

gist:2874877 はてなブックマーク - gist:2874877

テストデータを作る場合、rails c で画像をモデルに割り当てて、保存すればOKです。

photo = Photo.new
photo.image = File.open('app/assets/images/dummy.jpg')

RSpec でテスト

include ActionDispatch::TestProcess
 
FactoryGirl.define do
  factory :photo do
    ignore do
      image_file "test1.jpg"
    end
 
    name "TestPhoto"
    image { fixture_file_upload(Rails.root.join('spec', 'support', 'test_images', "#{image_file}"), 'image/jpg') }
  end
end

Action*3 – rspecでCarrierWaveのアップロードファイルをclean はてなブックマーク - Action*3 - rspecでCarrierWaveのアップロードファイルをclean

How to: Cleanup after your Rspec tests · jnicklas/carrierwave Wiki はてなブックマーク - How to: Cleanup after your Rspec tests · jnicklas/carrierwave Wiki

[Ruby on Rails] デフォルトのアクションを only で制限しつつ、独自のアクションを追加する方法

Ruby on Rails のルーティング設定で、デフォルトのアクションを only で制限しつつ、独自のアクションを追加する方法をメモ。

resources :blogs, only: %w[index show] do
  collection do
    get 'search'
  end
end

rake routes すると、blogs#index, blogs#show の他に blogs#search が加わっているはず。

[Ruby on Rails] acts_as_list の使い方

Ruby on Rails で acts_as_list を使うときに参考になったサイトをメモ。

swanandp/acts_as_list · GitHub はてなブックマーク - swanandp/acts_as_list · GitHub

Acts as list by swanandp はてなブックマーク - Acts as list by swanandp

つくるぶガイドブログ: ドラッグアンドドロップで並べ替え(Rails + Ajax) はてなブックマーク - つくるぶガイドブログ: ドラッグアンドドロップで並べ替え(Rails + Ajax)

Ruby/Ruby on Rails/acts_as_list – TOBY SOFT wiki はてなブックマーク - Ruby/Ruby on Rails/acts_as_list - TOBY SOFT wiki

Sortable List in Ruby on Rails 3 – Unobtrusive jQuery | Web Tempest はてなブックマーク - Sortable List in Ruby on Rails 3 – Unobtrusive jQuery | Web Tempest

JQuery UI Sortable を使ってドラックアンドドッロプでRuby on Railsの一覧表示の順を設定する – @yuumi3のお仕事日記 はてなブックマーク - JQuery UI Sortable を使ってドラックアンドドッロプでRuby on Railsの一覧表示の順を設定する - @yuumi3のお仕事日記

Sortable | jQuery UI はてなブックマーク - Sortable | jQuery UI

Sortable – jQuery UI API 1.8.4 日本語リファレンス – StackTrace はてなブックマーク - Sortable - jQuery UI API 1.8.4 日本語リファレンス - StackTrace

[Ruby] 37signals謹製の開発用HTTPサーバ「Pow」

Ruby on Rails や Sinatra などのRackアプリ向けの開発用HTTPサーバ「Pow」を使ってみました。(Mac OS X専用)

Pow: Zero-configuration Rack server for Mac OS X はてなブックマーク - Pow: Zero-configuration Rack server for Mac OS X

curl get.pow.cx | sh
cd ~/.pow
ln -s /path/to/myapp

■ 再起動の方法

touch ~/.pow/myapp/tmp/restart.txt

■ ログ垂れ流し

tail -F ~/.pow/myapp/log/development.log

【参考】

[Pow]Railsで使える便利な開発サーバー #Mac #Rails #Ruby – Qiita はてなブックマーク - [Pow]Railsで使える便利な開発サーバー #Mac #Rails #Ruby - Qiita

[Ruby on Rails] 改行コードを br タグへ変換する

Ruby on Rails で改行コードを br タグへ変換するメソッドをメモ。

simple_format だと p タグが邪魔なので、自作ヘルパーを ApplicationHelper に入れておくと幸せになれそう。

module ApplicationHelper
  # 改行コードをbrタグへ変換する
  def linebreak_to_br(text)
    text.gsub(/\r\n|\r|\n/, "<br />")
  end
end

simple_format (ActionView::Helpers::TextHelper) – APIdock はてなブックマーク - simple_format (ActionView::Helpers::TextHelper) - APIdock

[Ruby on Rails] 現在のURLの取得方法(パラメータ付きも)

Ruby on Rails3 で 現在のURLを取得する方法を色んなパターンでメモ。

■ パラメータ付きURLをそのまま使いたいとき

url_for(params)

■ パラメーターを追加するとき

url_for(params.merge(foo: 'bar'))

■ パラメーターを削除する時は、nilにする。

url_for(params.merge(foo: nil))

参考情報

Railsで現在のURLにパラメーターを追加/削除したURLを取得 – このブログは証明できない。

[RSpec] テストコードでの Devise の使い方いろいろ

Ruby on Rails + RSpec でテストコードを書くときの Devise の使い方いろいろメモ。

主にここを読む。

How To: Controllers and Views tests with Rails 3 (and rspec) · plataformatec/devise Wiki はてなブックマーク - How To: Controllers and Views tests with Rails 3 (and rspec) · plataformatec/devise Wiki

■ current_user にスタブを使う

Controllerのテスト

before do
  controller.stub!(:current_user).and_return(FactoryGirl.create(:user))
end

他にも。

deviseを使ったコントローラのテスト #Rails #Ruby #devise #Rspec – Qiita はてなブックマーク - deviseを使ったコントローラのテスト #Rails #Ruby #devise #Rspec - Qiita