はじめてのRuby on Rails、トラブル記録
スポンサーサイト

一定期間更新がないため広告を表示しています

posted by スポンサードリンク | | - | - | - |はてなブックマーク - スポンサーサイト
Win7 64bitの場合Rails3と一緒に結局現状どのRubyを使えばいいのか(2011年2月版)
Rails3に移行しようと思ってインストールしたとき、Windowsであるせいでひっかかる箇所もちょいちょいありますが、それより何よりトラブルのもとは64bit!
64bitでさえなければ起こらなかった問題がどれだけたくさんあったことか

RubyとRailsを入れて、サンプルプログラムを動かそうとするのに、解決不能なエラーに多数ひかかってどうしてもうまくいかなくて、結局rubyとrailsいろんなバージョンの組み合わせを試すはめになりました……。

64bitのWindows機でトラブってここに辿り着く人がどれだけいるかわかりませんが、まあ誰か助けられれば幸いということで。

  • Ruby1.9.2 x64 + Rails 3.0.3 ×
    MySQL2のGemのインストールの時に、以下のようなエラーが出て、さんざん探し回ったんだけれど、結局解決法が見つからなかった。
    ERROR: Failed to build gem native extension.

    C:/Ruby19/bin/ruby.exe extconf.rb
    checking for stdio.h... * extconf.rb failed *
    Could not create Makefile due to some reason, probably lack of
    necessary libraries and/or headers. Check the mkmf.log file for more
    details. You may need configuration options.

    Devkitを入れるというのはちょいちょい見られたので試したけど、Devkitの後にするgem install rdiscount --platform=rubyでまた別のエラーが出たりして、結局一番根本のところは解決してないようだった。諦めた。
    MySQL使ってなければ状況は違うかもしれないけど、わからない。

  • Ruby1.8.7 x32 + Rails 3.0.3 ×
    最初すんなりセットアップできて、良さそうかと思ったんだけど、rails3のプラグインでRuby1.9の文法に依存しているものがあり、アウト。

  • Ruby1.9.2 x32 + Rails 3.0.3 ○
    実は1.8.7を試してみた後、1.9.1を試したりもしたんだけれど、1.9.2 x64とあまり状況は変わらなかった。それで、どうも引っかかっている箇所の原因がx64だからっていうのがあったみたいだったので、x32版を試してみることにした。

    そしたらなんと……うまくできた!
    64bitマシンだからって64を選ばず32のがうまくいくってどういうことさ

    いくつか足りないdllがあるので追加する必要はあるけれど、足りないものはRails2.xのインストールの時に必要だったものと同じだった。

    なので、以下のエントリが参考になります。
    Windowsでのrubyのインストール・セットアップ方法
    Windowsでruby gemsをインストールする
    Windowsでrailsをインストールする

    dllを入れるときの注意。32bit版のものでないと以下のエラーが出ます。
    193: %1 は有効な Win32 アプリケーションではありません。

あまり気にしてなかったけど1.8.7の時も実はx32版でやっていたので、あとはこの1.9.2 x32でうまくいってくれるといいんだけど……。
posted by トモト | 21:08 | Rails3.x | comments(3) | trackbacks(0) |はてなブックマーク - Win7 64bitの場合Rails3と一緒に結局現状どのRubyを使えばいいのか(2011年2月版)
Win7/64bitでRuby1.9.2+Rails3.2のセットアップ
【2011/2/5追記】
結局Ruby1.9の64bit版は色々うまくいきませんでした。
こちらのエントリを先にどうぞ→


 Ruby1.9.2でRails3のプロジェクトつくりはじめたと思ってたら、前の1.8.7上でRails3を動かしていたということに途中で気づいた
そそっかしすぎる

もう一度Ruby1.9.2にするためにやったときのセットアップメモ。
Rails2.xの時にはずいぶん色々dllを取ってこなきゃいけなかったと思う。↓
また何か足りないって言われたら随時追加しましょう。
posted by トモト | 22:12 | Rails3.x | comments(2) | trackbacks(0) |はてなブックマーク - Win7/64bitでRuby1.9.2+Rails3.2のセットアップ
rake db:migrateするとInvalid date: BTREEと出る
 Rails3を新しく始めて、新規プロジェクトでユーザー認証プラグインのDeviseをセットアップしようとしていたら、rake db:migrateでInvalid date: BTREEと出てmigrateできず

どうも調べてみたら、Rails3からの新しいMySQL用のアダプターのMySQL2のバグで起こっている模様。
githubのMySQL2のところに報告が上がっていました。

とりあえず重要な点をまとめると、
  • 原因はmigrationファイル中のadd_indexで引っかかっている。
    add_indexを使わなければいい。
  • WindowsのXPか7で32bit版を使ってる場合、MySQLのバージョンを5.1以降のibフォルダの中にあるlibmysql.dllをruby/binの中にいれればいい。最新版は5.5。
  • 64bitでは解決した人がいない模様……(2011/2/4現在)
自分の環境はMySQL5.1, Win7 64bit。
だめやん
仕方ないので、add_indexの行をコメントアウトしちゃいました。ここコメントアウトしても、emailやreser_password_tokenのカラム自体は作られます。
indexって使ったことないんだけど、どのくらい支障でるかなあ……。

【余談】
ところで、幸運にも32bitマシンを使っててこの記事を見たなら、MySQLをアップグレードすると思います。そのとき、今入ってるバージョンのやつはきちんと先に停止した方がいいですよ!どこのブログかわからなくなってしまったんですが、停止しなかったらひどい目にあったというのを見ました。
posted by トモト | 18:17 | エラー | comments(2) | trackbacks(0) |はてなブックマーク - rake db:migrateするとInvalid date: BTREEと出る
Rails3での新規プロジェクトの作り方
Rails3では2.xまでとは色々コマンドが違うみたいだったので、またまとめました。

【1】アプリの作成

C:¥> rails new アプリ名 -d mysql
データベースにMySQLを使わずデフォルトのSQLiteを使う場合は"-d mysql"はいりません。
@Rails2.x: rails appname -d mysql

【2】依存関係にある必要なGemを一挙にインストール

Rails3では、Gemの管理にbundlerというのを使うようになったみたいです。
以前はconfig/environment.rbとかで管理してたのが、appフォルダ直下の"Gemfile"にすべて完結にまとめて書かれているようでわかりやすいですグッド
以下のコマンドで、rakeやactivesupport、その他必要なGemファイルが一挙にインストールできてしまいます!!
¥APP_FOLDER> bundle install
便利!!

ホントは先に画面確認しようとしたら、MySQL2がない、"Try running 'bundle install'と言われたのでやってみました。内容見たら……こっち先にやったほうがいいね。
【重要】新しいGemを追加したらGemfileに"gem 'Gem名'"って必ず追加!!

【3】WEBrickを起動して画面を確認

¥APP_FOLDER> rails s
Welcome aboardと書かれたページが出たら成功です。
@Rails2.x: ruby script¥server

【4】Scaffold

¥APP_FOLDER> rails g scaffold モデル名の単数形 フィールド名:型
@Rails2.x: ruby script¥generate scaffold


¥APP_FOLDER> rails g scaffold User name:string

【5】migrationファイルでテーブルの細かい設定を編集する(必要があれば)

db/migrateの下にできたmigration用のファイルを開く。

t.string :name :limit=>32

【6】データベースのマイグレート

¥APP_FOLDER> rake db:migrate
posted by トモト | 17:02 | Rails3.x | comments(0) | trackbacks(0) |はてなブックマーク - Rails3での新規プロジェクトの作り方
ラジオボタンをクリックするとアクションを呼ぶようにする
フォームを監視して選択された内容によってアクションを読んだり、ページ内の一部を更新したりするのはobserve_fieldでできるけれど、
こっちの方が実際のボタンのコードのところに置けるのでいいなと思ったのでメモ。

View
<%= f.radio_button :type, 'hoge',
  { :onclick => remote_function(:update => "total", :url =>{ :action => 'total_number'}, :submit => :user) } %>

<span id="total><%= render :partial => 'total' %>&lt;/span>
・このラジオボタンを選択したときに、total_numberアクションが呼ばれる。
:submit => :userでform_for @userに入力された内容がコントローラーに送られる。
:update => "total"で、ページ内のid="total"部分が更新されるよう指定。

Controller
def total_number
  @key = params[:user][:type] // userモデルのラジオボタン:typeの内容を取得の例
  // なんやかんや適当にやりたい処理を入れて……

  render :partial => 'total'
end

こんな感じ。

ちなみに、render :partial => は複数の違う種類のテンプレートをやる方法がない模様。
1つしかできないのはちょっと不便しょんぼり
posted by トモト | 15:17 | Rails小ネタ | comments(0) | trackbacks(0) |はてなブックマーク - ラジオボタンをクリックするとアクションを呼ぶようにする
named_scopeで検索結果が1件の場合
毎回Find使って検索するのが面倒なのでnamed_scope大好きなんだけれど、 named_scopeはFind :allだということを忘れて、
結果が1件だけ返るときによく書き方を間違えてバグらせるのでメモ。

たとえばマイミクみたいな感じでユーザー同士をFriendsとして登録するFriendsモデルがあったとして。
以下のようにAさんとBさんのIDを入れて一致したデータを取り出すようなnamed_scopeを作りました。
named_scope :match,
    lambda{|id1, id2|{:conditions => ["user_id = ? AND friend_id = ?",id1,id2 ]}}
最初に書いたようにnamed_scopeはFind.allなので、配列が返ります。1件だしと思って下のように書くと失敗します。
friend = Friend.match(1,2)
p friend.name  → ひっかかる

正しくは以下の形。
frind = Friend.match(1,2).first
本当はミスを避けるためにnamed_scope内にfirstを入れられるのがいいんだけど、できないっぽい?
軽くググッて調べたけどやり方が見つからなかったので、当座はこれで凌ぎます。
posted by トモト | 15:32 | Rails小ネタ | comments(0) | trackbacks(0) |はてなブックマーク - named_scopeで検索結果が1件の場合
Windowsでrailsをインストールする
rubyがインストールされていなければ、rubyをインストール
関連エントリ:Windowsでのrubyのインストール・セットアップ方法

ruby gemsがインストールされていなければインストール
コマンドプロンプトでgem -vといれてgemのバージョンが出ればインストールされています。
出なければインストール。
関連エントリ:Windowsでruby gemsをインストールする

ruby gemsを動かすのに必要なライブラリをruby¥binフォルダに入れる
gemでrailsをインストールしようとすると、「zlib.dllがありません」「SSLEAY32.dllがありません」というエラーメッセージが出ます。
zlibとopensslのライブラリをrubyフォルダ内のbinの中に入れると、このエラーは出なくなります。

それぞれ以下からダウンロード
・zlib:http://jarp.does.notwork.org/win32/   →zlib-1.1.4-1-mswin32.zipをダウンロード
・openssl: http://code.google.com/p/openssl-for-windows/downloads/list

ダウンロードしたファイルを解答すると、どちらも中にbinフォルダがあるので、zlib.dll、ssleay32.dll、libeay32.dllをrubyフォルダ下のbinフォルダ内に入れます。

 gemからrailsをインストール
コマンドプロンプトで以下のコマンドを入れてrailsをインストール。
gem install rails

バージョンを指定する場合は以下のような感じで。
gem install rails --version 2.4.7

Successfully installed rails-[バージョン]と出たら成功です!

posted by トモト | 21:58 | インストール | comments(0) | trackbacks(0) |はてなブックマーク - Windowsでrailsをインストールする
Windowsでruby gemsをインストールする
railsをインストールするのにruby gemsがいるので、セットアップ方法をメモメモ

ruby gemsをダウンロードする
RubyForgeの以下のページでgemsをダウンロードします。最新版のzipをもらっとく。
http://rubyforge.org/frs/?group_id=126

ダウンロードファイルを適当なところに置く
ダウンロードしたzipを解凍して、フォルダを好きなところに置きます。
ここではC直下に置きました。

setup.rbを実行
rubygemsのフォルダの中にsetup.rbがあります。それをコマンドプロンプトから実行します。

C:¥rubygems-1.3.7>ruby setup.rb

これを実行すると、ちゃらちゃらちゃらっと色々メッセージが出てきます。

インストールできたかどうか確認

コマンドプロンプトでgemのバージョンを確認してみて、出ればOK。コマンドは以下。
gem -v
posted by トモト | 21:29 | インストール | comments(0) | trackbacks(0) |はてなブックマーク - Windowsでruby gemsをインストールする
Windowsでのrubyのインストール・セットアップ方法

 ノートPCにruby入れようとしたら、完全に忘れててまた調べる羽目になったので、この機械にメモしときまーす

rubyのダウンロード
rubyの公式ページにソースが置いてありますが、コンパイルしないといけません。
windowsだとコンパイルする環境を作るのがまず面倒なので、有志の方が作ってくださっているバイナリ版を使います。
バイナリ版は色々ありますが、私はmswin32を使わせてもらっています。
Ruby-mswin32: http://www.garbagecollect.jp/ruby/mswin32/ja/

解凍して適当なところに置く
ダウンロードしたファイルを「ruby」フォルダとかに解凍して、適当なところに置きます。
ここではCドライブ直下にC:¥rubyに置きました。

パスを通す
スタートボタン>コンピュータで右クリック>プロパティ>システムの詳細設定>詳細設定タブ>環境変数
システム環境変数の中に「Path」または「PATH」というのがあると思います。
それを選んで「編集」、既に色々書かれているのは絶対に消さないようにして、末尾に「;」で区切ってC:¥ruby¥binを追記

インストールされたかどうか確認
コマンドプロンプトで以下のように入れて、「ruby 1.9.1 (20**-**-** patchlevel ***」のようにバージョンが確認できれば、インストール成功です!
ruby --version


【追記】
インストール後使い始めたら、何かとdllを要求されました。以下のdllはたぶん必要。
  • zlib.dll 入手方法(リンク先のページのに記載)

  • iconv.dll
    以下のサイトでダウンロード可能。(本家) 
    http://www.gnupg.org/download/index.en.html 
    ダウンロードページにミラーへのリンクがあるので、カナダのFTPを選んだところ、ディレクトリ一覧があった。 
    binaryの中のlibiconv-1.9.1.dll.zipをダウンロードして解凍。
    解凍したフォルダの中のiconv.dllを¥ruby¥binにいれればOK

  • readline.dll
    http://jarp.does.notwork.org/win32/
    ダウンロードして解凍したら、binフォルダ内のreadline.dllを¥ruby¥binに放りこめばOK。
posted by トモト | 12:54 | インストール | comments(0) | trackbacks(0) |はてなブックマーク - Windowsでのrubyのインストール・セットアップ方法
Actionを実行したときにViewで何も表示しない方法
コントローラーにhogehogeというアクションを作って、ビューからそれを実行したりすると、下のようなエラーメッセージが出てしまうことがあります。
ActionView::MissingTemplate (Missing template main/hogehoge.erb in view path app/views):


アクションを呼び出したいだけで、ビューには何も変更はないんだけれど、hogehogeアクションのビューを探して見つからなかったって感じ。
そんな時には、アクション内に「何も表示しませんよ」と書いてあげればOKでした。

render :nothing => true


respond_toでいくつかのrenderをまとめて書くときはこんなんで。
respond_to do |format|
  format.html { render :nothing => true }
end
posted by トモト | 13:58 | Rails小ネタ | comments(0) | trackbacks(0) |はてなブックマーク - Actionを実行したときにViewで何も表示しない方法
Rails3レシピブック 190の技
Rails3レシピブック 190の技
ついにRails3対応版が出ました!!
WEB+DB PRESS Vol.58
WEB+DB PRESS Vol.58
Rails2系から3への移行時に知りたいことがひとまとまりになっててよかった!色々ググるよりこれを読む方が早い。
Rubyレシピブック 第3版 303の技
Rubyレシピブック 第3版 303の技
Rubyやるならこのリファレンスは必要。
Search this site