ラベル ruby の投稿を表示しています。 すべての投稿を表示
ラベル ruby の投稿を表示しています。 すべての投稿を表示

2016年12月25日日曜日

Itamaeセットアップ on CentOS7

Rubyなどをインストール。Rubyはrbenvで入れた方がいろいろできるが、今回は手軽なyumで。
# yum install ruby-devel gcc-c++
gemでItamaeなどをインストール。
# gem install itamae io-console --no-document
パスワードも生成するならこれも必要
# gem install unix-crypt --no-document
参考 floatingdays: Itamaeセットアップメモ Itamae自分メモ[1] userとかsshとかportの初期設定

2013年7月5日金曜日

Amazon Linuxに Ruby 2.0(+ Rails)をインストールするメモ

現時点でyumでは2.0は入れられないので調べた。
いろんなやり方があって、みんな微妙に違うから、参考サイトのパッチワークになってしまった。
参考にしたのは下記のサイト、下記の箇所。

  • yumで依存するパッケージをインストールする(全部いるのかどうかは分からない)

  • “Here is a variant with rbenv.”の方に従って、
    • rbenvをインストール
    • ruby-buildをインストール
    • /etc/profile.d/rbenv.shファイルを作成
    • “. /etc/profile”を実行

  • Rubyをインストール(必要に応じてバージョンを指定する)
  • Railsをインストール(必要に応じてバージョンを指定する。本家サイトはこちら


後で気付いたが、Amazon Linuxには最初からRuby 1.8が入っているからrbenvにしてよかった。

2012年4月17日火曜日

Redmineをインストールための参考サイトのメモ

CentOSにRedmine 1.4 + Passenger(mod_rails)をセットアップする際に参考にしたリンク集のメモ。



Redmine専用のサーバを用意できて、かつ手間を省きたいならAll in OneインストーラであるALMiniumという選択肢もある → alminium/alminium · GitHub
  • 素のCentOSではyumでgitをインストールできないので、RPMForge改めrepoforgeかDAGをyumリポジトリに追加しておくこと。
  • ALMiniumはCentOS 5.xにはインストールできない

2011年3月25日金曜日

プログラム言語とフレームワークのオンラインマニュアル29選


Webで公開されている、プログラム言語・フレームワーク・DBのマニュアル(リファレンス)サイトへのリンクをまとめてみた。
選んだ基準は、できるだけ日本語で、なるべく分かりやすいこと。それを満たすなら公式リファレンスより非公式のものを優先している。



JavaScriptのマニュアルは他にも色々あり、使う人のレベルや用途によってどれが使いやすいかが変わってくると思うが、昔大変参考にさせて頂いた杜甫々版を挙げておいた。

Python、Perl、Objective-Cについては公式/準公式のリンクを書いたが、有志によるマニュアルでもっと良いものがあるのかもしれない。(これらの言語はあまり使わないので知らない。)

2010年6月14日月曜日

システム開発で使うオンラインの日本語マニュアル



意外とマニュアル内検索が無かったり、あっても検索しづらかったりすることが少なくない。
また、普通にGoogle検索から探そうとすると古いマニュアルばかりヒットすることも(Postgresとか)。
素直に英語のマニュアルで調べればいいんだろうけど...

2010年5月8日土曜日

Cucumberインストールメモ

素に近いCentOSへのインストールのメモ。Railsは使わない。
(やったことを順に書いたので、「正しいインストール方法」としては読み辛い。)


  1. Rubyインストール

    yum install ruby ← 1.8.6以降が必要になり、後でソースから入れなおした
  2. Ruby Gemsインストール

    yum install rubygems ← Rubyを入れなおしたのでこちらもソースから入れなおした
  3. Cucumberインストール

    gem install cucumber
    最初はずっとcucamberと書いていてエラーにされた
  4. Webratインストール

    gem install webrat
    しようとしたらエラーになった。

    Building native extensions.  This could take a while...
    ERROR:  Error installing webrat:
            ERROR: Failed to build gem native extension.

    /usr/bin/ruby extconf.rb install webrat
    can't find header files for ruby.


    Gem files will remain installed in /usr/lib/ruby/gems/1.8/gems/nokogiri-1.4.1 for inspection.
    Results logged to /usr/lib/ruby/gems/1.8/gems/nokogiri-1.4.1/ext/nokogiri/gem_make.out

    1. 参考になりそうな記事を見つけた → gem で nokogiri, webrat放り込む時にエラーでた on Ubuntu 9.04 - ザ・職人
    2. libxml2はインストール済みだった
    3. libxml2-develインストール

      yum install libxml2-devel
      でもWebratはインストールできなかった
    4. libxsltはインストール済み
    5. libxslt-develインストール

      yum install libxslt-devel
      でもWebratはダメ
    6. もしかしてruby-devel?

      yum install ruby-devel
    7. webrat再チャレンジ

      gem install webrat
      入った!
  5. Mechanizeインストール

    gem install mechanize
  6. RSpecも必要?

    gem install rspec
これでインストール完了。

インストールされたバージョンは
  • Ruby 1.8.5
  • Cucumber 0.6.4
  • Webrat 0.7.0
  • Mechanize 1.0.0
  • RSpec 1.3.0



試しに動かしてみたい。
ここが参考になりそう → エンジニアは空を飛ぶ: Cucumber入門(1) 一番最初のCucumber
featureの日本語化についてはここを参考にやってみる → Ruby/cucumber/日本語を使う方法 - TOBY SOFT wiki


ディレクトリ作成
cd /tmp
mkdir cuke
cd cuke
mkdir features
mkdir features/step_definitions
mkdir features/support


環境設定ファイル作成
下記を参考に

vi features/support/env.rb
require 'spec/expectations'
require 'cucumber/formatter/unicode'

# Webrat
require 'webrat'

require 'test/unit/assertions'
World(Test::Unit::Assertions)

Webrat.configure do |config|
  config.mode = :mechanize
end

World do
  session = Webrat::Session.new
  session.extend(Webrat::Methods)
  session.extend(Webrat::Matchers)
  session
end


featureファイル作成
vi features/test.feature
# language: ja
機能: Cukeのテスト
  "Cucumber"をGoogle検索してCucumber関連の検索結果を得る

  シナリオ: 同上
    前提 "http://www.google.co.jp/"ページを表示している
    もし "cucumber"を検索する
    ならば "moroの日記"と表示されていること


stepsファイル作成(ためしにGivenだけ)
vi features/step_definitions/test_steps.rb
# -*- encoding: UTF-8 -*-

前提 /^"([^"]+)"ページを表示している$/ do |url|
  visit url
end
動かしてみる
cucumber
エラー発生
    前提 "http://www.google.co.jp/"ページを表示している # features/step_definitions/test_steps.rb:3
      undefined method `instance_variable_defined?' for #<Net::HTTP www.google.co.jp:80 open=false> (NoMethodError)
      (eval):2:in `visit'
      ./features/step_definitions/test_steps.rb:4:in `/^"([^"]+)"ページを表示している$/'
      features/test.feature:6:in `前提 "http://www.google.co.jp/"ページを表示している'

instance_variable_defined
はRuby1.8.6以降が必要らしい → rip のインストール - オボロぼろぼろ
Ruby1.8.6以降はyumでは見つからなかったので、ソースからコンパイルする必要があるようだ。


こちらを参考に → マルニカ。 CentOSに最新Rubyをインストール。

Rubyをアンインストール
yum remove ruby
gemsも一緒にremoveされた。

後は上記サイトのとおりに。
Rubyはなんとなく1.9.1を選んだ。
最新のバージョン番号は下記で確認で。

またひととおりCucumberからインストールし直しだ...

(Gemでインストールし直す。)

インストールされたバージョンは
  • Ruby 1.9.1
  • Cucumber 0.6.4
  • Webrat 0.7.0
  • Mechanize 1.0.0
  • RSpec 1.3.0

再チャレンジ
cucumber
3 steps (2 undefined, 1 passed)
「前提」が通った!


steps内の記述については下記が参考になりそう。

日本語でStepsを定義する際には書き方をmoro-misoに合わせておいた方が後々幸せになれるかも。


また、Cucumberの問題ではないが、CentOS 5.4でもprelinkはRuby-1.9.1のバイナリを破壊する、かも | Selfkleptomaniacという問題が発生したので、ここに書いてある対応をした。

2010年3月14日日曜日

Railsのバージョンを調べる方法

Railsアプリのルートディレクトリで、

ruby script/about

2009年11月6日金曜日

Rails 2.xで XMLサイトマップを生成する方法

Rails2.3で試した。
必要最低限の要素のみ。


config/routes.rb

map.connect "sitemap.xml", :controller => :test, :action => :sitemap


controllers/test_controller.rb
class TestController < ApplicationController
def sitemap
# サイトマップとして送信したいページのURL生成に必要な情報を取得する
@members = Member.find(:all)
@entries = Entry.find(:all)

  headers["Content-Type"] = "text/xml; charset=utf-8"

  respond_to do |format|
format.xml {render :layout => false}
end

end
end


views/test/sitemap.xml.builder
xml.instruct!
xml.urlset(:xmlns => "http://www.sitemaps.org/schemas/sitemap/0.9") do
# トップページ
xml.url do
xml.loc(url_for(:controller => :top, :only_path => false))
end
      
# 個別のページ
@members.each do |member|
xml.url do
xml.loc(url_for(:controller => :members, :action => :show, :id => member.id, :only_path => false))
end
end



end
「http://」から始まるフルなURLにするために「:only_path => false」を付けている。

状況によってはキャッシュさせた方が良いだろう。

検索エンジンへの通知はrobots.txt等で。(Google Webマスターツールとか使った方が安心感があるけど。)

robots.txt
# See http://www.robotstxt.org/wc/norobots.html for documentation on how to use the robots.txt file
#
# To ban all spiders from the entire site uncomment the next two lines:
# User-Agent: *
# Disallow: /

Sitemap: http://www.example.com/sitemap.xml


参考:
「はじめてのRuby on Rails2」著者サポートページ
Rails2.0でGoogleサイトマップとかのsitemap.xml作る - ひげろぐ
sitemaps.org - プロトコル

2009年9月24日木曜日

Rails ActiveRecord::Validationsのエラーメッセージを多国語対応するメモ

RailsでActiveRecordのValidationによって生成されるエラーメッセージを翻訳するためのメモ。


方法その1:I18nを使う

所定のYAMLに翻訳部分を記述しておく方法。現在はこれが一番スマートなようだ。
(フィールド名とその後のメッセージの間に半角スペースが入ってしまう?)

参考:
 Rails 2.2.2でエラーメッセージを日本語化する。|WEBデザイン Tips
 Rails 2.2 の ActiveRecord::Validations#add のソースコードを読む - Ruby on Rails 研究 - Ruby on Rails with OIAX



方法その2:GetTextを使う

ActiveRecord::Errorsのdefault_error_messagesをゴリゴリ書き換える方法。
例えば、基本となるModelを作ってその中でメッセージをセットし、他のモデルはそれを継承する方法でもよいと思う。

class BaseModel < ActiveRecord::Base
 ActiveRecord::Errors.default_error_messages[:invalid] = _("がおかしいよ!")
 ActiveRecord::Errors.default_error_messages[:empty] = _("を入力してね!")
 ・
 ・
end
ただし最新のRailsではDeprecation::warnの対象

個々のエラー内容の前に出てくる文(デフォルトでは「<n> errors prohibited this object from being saved」と「There were problems with the following fields:」)は、Module: ActionView::Helpers::ActiveRecordHelperにあるとおり、:header_messageと:messageを指定することにより変えられる。
(2009/10/14追記:Ruby on RailsでRuby-GetText-Packageを使う (Rails-2.3.2以降) - よたらぼ 保管庫に書いてある、「エラーメッセージのタイトル部分をカスタマイズ」のやり方なら、個々のformごとに:header_messageと:messageを指定しなくてすむようだ。)


参考:
 エラーメッセージからフィールド名を取り除く
 ActiveRecord::Errorsあたりのローカライズ - ハードコアシステム開発
 validationのエラーメッセージ(error_messages_for)の日本語化 - Slow Dance
(2009/10/14追加:最新のRails/GetTextについての説明になっていた)
 Ruby on RailsでRuby-GetText-Packageを使う (Rails-2.3.2以降) - よたらぼ 保管庫

Railsで Viewの partialにデータを渡す方法

RailsのViewで部分テンプレートであるpartialを呼び出す場合、呼び出し時に :object または :collection と :locals を渡すことができる。

<%= render :partial => "msg", :object => "データ", :locals => {:name => "他のデータ"} %>

:collection の場合は複数のデータのそれぞれに対して1回ずつpartialが実行される。
<%= render :partial => "msg", :collection => ["データ1", "データ2"] %>

partial側では :object と :collection で渡されたデータは、partialの名前と同じ名前の変数に入っている。
#_msg.html.erb
<%= msg %> <= ここにデータが入っている
<%= name %> <= :localsで渡したデータは指定した名前の変数に入っている。


参考:
UK STUDIO - Railsのpartialの使い方
Ruby On Rails ピチカート街道 - partial パーシャルな関係【partial と object】 -
render :partialカウンター、オブジェクト - ザリガニが見ていた...。

2009年8月28日金曜日

Railsでタグクラウド

いくつかプラグインがあるが、acts_as_taggable_on_steroidsが一番人気のようだ。

acts_as_taggable_on_steroidsの使い方は、acts_as_taggable_on_steroidsの使い方まとめ - ひげろぐが参考になる。

acts_as_taggable_on_steroidsのインストール元については、Railsのtagプラグイン「acts_as_taggable_on_steroids」がgithubに行ってた - 常識という迷信にあるとおり、現在はgithubにあるのが最新のようだ。



上記の参考サイトではacts_as_taggable_on_steroidsの機能をフルに使っているが、タグクラウドを表示したいだけなら下記だけでOK。

  1. acts_as_taggable_on_steroidsをインストール
  2. タグのモデルを用意する(既存のモデルでもcountと表示用の文字列(下記の例ではlabel)さえあればOK)
    # tag_sample.rb
    class TagSample
     attr_accessor :count, :label
    end
  3. 上記のモデルにデータをセットした配列を用意
    # FooController.rb
    # 実際にはDBから取得したデータとかをループで処理するだろうけど
    tag1 = TagSample.new

    tag1.count = 10

    tag1.label = "ラベル1"
    tag2 = TagSample.new

    tag2.count = 20

    tag2.label = "ラベル2"
    @tags = [tag1, tag2]

  4. ヘルパーでTagsHelperをインクルードする
    # foo_helper.rb
    module FooHelper
    include TagsHelper
    end
  5. ビューでタグクラウドを表示(第2引数のCSSクラスの数は増減OK)
    <!-- foo/bar.html.erb -->
    <% tag_cloud(@tags, ["tag-s", "tag-m", "tag-l"]) do |tag, css| %>
     <%= link_to(h(tag.label), {:action=> :tags, :id => tag.label}, :class => css) %>
    <% end %>
  6. CSSで見た目を調整
    a.tag-s { font-size: 80%; }
    a.tag-l { font-size: 150%; }

Railsで View内で head要素にCSS等を追加する方法

Railsで特定のページだけにCSSファイルを追加する方法を見て知った。これは便利。


application.html.erb等で、 yieldにパラメータを指定すればOK。

<html>
<head>
<title>テスト</title>

<%= yield :head %>

</head>
<body>

<%= yield %>

<%= yield :foot %>

</body>
</html>

Viewの方ではcontent_forに同じパラメータを指定してブロック内に書く。
<h1>head and foot</h1>

<% content_for :head do %>
 <%= stylesheet_link_tag "foo" %>
<% end %>

<% content_for :foot do %>
 <%= javascript_include_tag "bar" %>
<% end %>

こんな感じのHTMLになる。
<html>
<head>
<title>テスト</title>

<link href="/stylesheets/foo.css?1345990170" media="screen" rel="stylesheet" type="text/css" />

</head>
<body>

<h1>head and foot</h1>

<script src="/javascripts/bar.js?1350833305" type="text/javascript"></script>

</body>
</html>


これを使えばCSSはhead内に、JavaScriptはbody要素の最後に入れられる。

Railsの日付選択ヘルパー (select_date)

Rails2.3で日付選択ヘルパー(select_date)を使うためのメモ。

オプションとして指定できるものはこんな感じのようだ。

<%
options = {
 :prefix => 'payday', # field名のprefix
 :order => [:month, :year, :day], # 表示順
 :date_separator => '/', # 項目間の区切り
 :prompt => true, # 選択リストの一番上の表示について。個別の指定も可
 :include_blank => true, # 選択リストの一番上のブランクにする
 :use_month_numbers => true, # 月を数字で表す

 # 選択可能な年の範囲を指定
 :start_year => Date.today.year,
 :end_year => Date.today.year + 1,

 # 非表示にする
 :discard_year => true,
 :discard_month => true,

 :discard_day => true
}
html_options = {} # ?
%>
<%= select_date(Date.today + 2.days, options, html_options) %>


また、Rails2.2にはバグがあるらしい → エラー回避 date_select -- can't convert Symbol into String - 税理士業界でSaaS開発をしながら綴る日記


select_dateとdate_selectは似てるけど別モノらしい。
年月日を個々に作る場合、「select_year, select_month, select_day」が使えるが、「year_select, month_select, day_select」は無い。



参考:
 Module: ActionView::Helpers::DateHelper (本家リファレンス)
 変なヤバいもんログ » Railsで忘れそうなHelperメソッドメモ

 いきなりはまった。select_date - 印刷屋のdeveloper日記

Railsプラグイン ActiveForm調査メモ

AtcitveFormはテーブルに紐付かないモデルを使って入力フォームを作るためのプラグイン。
データの入れ物とvalidationを担う。

「ActiveForm」という名前のプラグインは複数あるので注意。
Gemでインストールすると、module版のActiveFormがインストールされるが、よく分からなかったのでパス。

どうやら「RealityForge」で公開されたActiveFormが主流のようだ。


最新版?:
 maciej's active_form at master - GitHub


使い方:
 RailsのActiveFormの使い方 - 京の路
 Ruby on Rails プラグイン まとめ wiki - active_formプラグイン
 るびすけの開発日記 ~Ruby on Rails~ - IT業界のための転職サイト -



Rails2.2以降ではエラーが発生する。

undefined method `self_and_descendants_from_active_record' for Xxx:Class

rails2.2でactive_formを導入するときにはまった - オレワカ。を参考に、「self_and_descendants_from_active_record」を追加すると解消した。
svnから持ってくるバージョンでは 「self_and_descendents_from_active_record」 すらも無いので注意。


使用例
#コントローラ
class SearchController < ApplicationController
 def index
  @search = Search.new(params[:search])
  if params[:search]
   @search.valid?
  end
 end
end
#モデル
require 'active_form'

class Search < ActiveForm
 attr_accessor :tag
 validates_presence_of :tag
 validates_length_of :tag, :maximum => 3
 def validate
  # カスタム入力チェックはここで
 end
end
<!-- ビュー -->
<% form_for(:search, @search) do |f| %>
<%= error_messages_for :search, "tag" %>
<%= f.text_field "tag" %>
<% end %>

2009年8月12日水曜日

Railsの GetText 2.0でサーバが起動しないエラーの対応メモ

レアなケースだろうけど一応メモ。


(参考:RailsでGetText)
Rails のためのものぐさな Web アプリケーションの国際化手法 - 川o・-・)<2nd lifeが参考になる。
ただしGetText 2.0からはenvironment.rbで読み込むgemが変わったので注意。

config.gem "locale_rails"
config.gem "gettext_activerecord"
config.gem "gettext_rails"



ActiveRecordもActionMailerも使わないので、config/environment.rbで不使用にしていた。
config.frameworks -= [ :active_record, :action_mailer ]

gettext(2.0)を使うために、下記をgemでインストール。
locale
locale_rails
gettext
gettext_rails
ActiveRecordは使わないのでgettext_activerecordは入れなかった。

アプリケーションにgettextを使う設定を入れて、mongrelを起動しようとしたがエラーになって起動できない。
ruby server/script

.../lib/active_support/core_ext/module/aliasing.rb:33:in `alias_method': undefined method `create!' for class `ActionMailer::Base' (NameError)

ActionMailer?使ってないけど?
しょうがないから不使用指定を外す。
config.frameworks -= [ :active_record, :action_mailer ]

config.frameworks -= [ :active_record ]

これでも駄目。
試しにgettext_activerecordをインストール。
これで起動したら起動できた。

もう1つ試しにgettext_activerecordのrequireをコメントアウトしたら起動しなかった。


結論:RailsでGetTextを使う場合、不要でもActionMailerを外しては駄目。かつ、不使用でもgettext_activerecordが必要。

ActiveResourceを使っている Controllerを RSpecでテストする例

参照系しか試してない。


下記の例では、MemberというActiveResourceをリスト表示したり詳細表示したりするControllerについて、RSpecでテストする。
(参考:ActiveResource の使い方(前編) : Rails 同士で通信する - WebOS Goodies ※「ユニットテスト」の項。RSpecではないけど。)

require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
require 'active_resource/http_mock'

describe MembersController do

 before do
  @member = {:id => 1, :name => 'foo'}

  @members = [@member]

  @header = Member.connection.__send__(:build_request_headers, {}, :get)

  ActiveResource::HttpMock.respond_to do |mock|
   mock.get '/members.xml', @header, @members.to_xml(:root => 'members')
   mock.get '/members/1.xml', @header, @member.to_xml(:root => 'member')
  end
 end

#後は普通にケースを書く
 #(略)

end

要するに、http_mockをrequireしておき、before()でモックが返すXMLを定義している。


ActiveResourceで取得する際にパラメータ付きのURLを使う場合、「mock.get」のところにもパラメータを付けなければいけないので注意。
例:
mock.get '/members.xml?q=keyword', @header, @members.to_xml(:root => 'members')



...と、ここまで書いてから、mockを使ってテストできることを知った。
 before do
  @member = mock_model(Member)
  Member.should_receive(:find).with(:all).and_return(@member)
  get 'index'
 end
ActiveResourceでもActiveRecordでもModelであることには違いがないから、ただMockを使えば良いだけだった。

HttpMockはむしろ、ActiveResource::Baseを継承したModelのテストのために使うのか。

RSpecの規約を覚えるためのリンク集とメモ

RSpecはDSLなので、決め事を覚えないと使いこなせない。
よく使うことになるであろう、参考リンクを列挙しておく。


前処理、後処理



aeertion(expectation)


change matcher


Controllerのテスト


Viewのテスト


Mock(mock_model)



参考:
 RSpec をもっと理解したかったので、まとめを作りました - takihiroの日記
 RSpec.info: Writing
 Index of /rspec (公式?仕様書)

RSpec on Railsのセットアップ

やったことのメモ。


インストール

gemでRSpecをインストール(もしかして不要?)

gem install rspec

RSpec-Railsもインストール(「ruby script/plugin install http://...」でインストールした方がいい?)
gem install rspec-rails
(rspec_railsだと見つからない)


generateする(とりあえずMemberモデルを対象に。)
ruby script/generate rspec
ruby script/generate rspec_model Member


なにはともあれ実行してみる
ruby script/spec spec/models/member_spec.rb
または
rake spec:models
などなど。(参考:RSpec on Rails でインストールされる rake タスク



ActiveRecordを使わない場合

そのままでは下記のようなエラーになる。
.../spec/spec_helper.rb:16: undefined method `use_transactional_fixtures=' for #<Spec::Runner::Configuration:0x1234567> (NoMethodError)
上記のソース(spec/spec_helper.rb)にはこう書いてある。
# If you're not using ActiveRecord you should remove these
# lines, delete config/database.yml and disable :active_record
# in your config/boot.rb
config.use_transactional_fixtures = true
config.use_instantiated_fixtures = false
config.fixture_path = RAILS_ROOT + '/spec/fixtures/'
書いてあるとおり、この3行を削除したら無事動いた。



参考:
 Rubyist Magazine - スはスペックのス 【第 1 回】 RSpec の概要と、RSpec on Rails (モデル編)
 Rubyist Magazine - スはスペックのス 【第 2 回】 RSpec on Rails (コントローラとビュー編) (続きは...?)
 RSpec on Railsを試してみた。 - ひげろぐ

Rubyの ActiveResource調査メモ





基本:

 ActiveResourceでいろんなAPIを叩いてみる。標的はHotpepper API - 富士山は世界遺産


発行されるURLと拡張子について:
 天使やカイザーと呼ばれて: ActiveResourceで拡張子なしのURIを発行する方法


応用編:
 ActiveResource の使い方(前編) : Rails 同士で通信する - WebOS Goodies
 ActiveResource の使い方(中編) : メソッドの詳細 - WebOS Goodies
 (後編は? 2009/09/17追記:公開された↓)
 ActiveResource の使い方(後編) : 一般の Web API にアクセスする - WebOS Goodies


ActiveResourceのバグ?
 [PATCH] ActiveResource find(:all) method returns "NoMethodError: undefined method `collect!'... - lambda {|diary| lambda { diary.succ! } }.call(hatena)
取得するXMLがn件のデータを包含する要素を持つ形の場合、包含する要素に属性type="array"が無いと「collect!メソッドが無いよ!」というエラーが発生する問題。

たとえばこれだとエラーになる。(n件のmemberを、membersという要素で包含している。)

<?xml version="1.0" encoding="UTF-8"?>
<menbers>
 <member>
  <id>1</id>
  <id>name</id>
 </member>

</menbers>

type="array"を付ければエラーにならない。
<?xml version="1.0" encoding="UTF-8"?>
<menbers type="array">
 <member>

  <id>1</id>
  <id>name</id>
 </member>

</menbers>


Rubyの ActiveRecordについてのメモ

しばらく離れていたらすっかり忘れてる。
調査したことのメモ。
微妙に仕様変わってる。


基礎:ActiveRecordを使ってみる « UK STUDIO


検索して見つからない場合の戻り値:ActiveRecord find時の戻り - 忘れやすいのでメモ - Yahoo!ブログ
(検索方法によってnilだったり空の配列だったり、例外が投げられたり)


find_first()とfind_all()は無くなった:同じくActiveRecord find時の戻り - 忘れやすいのでメモ - Yahoo!ブログ


最大値等のSQLでいう集約関数:RDBMSの集約関数の結果をActiveRecordで取得する方法 - 森薫の日記


ランダムに1件取り出す:
 そんな悲しい目をしないで » Blog Archive » Rails ActiveRecord でランダムにレコードを取得する方法
 Mysql で、ランダムにレコードを取り出す方法 - kaeruspoon
(RAND()を使う方法は行数と同じだけRNAD()を実行するわけだから、行数が多い場合はしんどそう)


find_by_xxx()とfind_all_by_xxxについて:ActiveRecordで検索-find_by_* - うなの日記

ブログ アーカイブ

tags