Home > Ruby on Rails

Ruby on Rails Archive

Ruby on Rails でデータをランダムに抽出する方法

Ruby on Rails で一つツールを作っていて、一つのテーブルの
複数のフィールドからデータをランダムに各々データを抽出し
それを組み合わせて1つのレコードを作りたかったんだけど、
まったくどうしていいか分からなく、約3週間くらい、ずーっとつまづいていました。

いろいろと調べてもわからない。。
いろんな人に聞いても、なかなか解決策が見つからず。。

そんな時に、最後の頼みの綱として、はてなの人力検索で聞いてみました。

そしたら、いきなり回答をもらい、解決!

このようなかんじでした。

Continue reading

MySQLの「/tmp/mysql.sock」が見つからないというエラー

Railsの設定をしていって、アプリを立ち上げたらこんなエラーが。。

No such file or directory - /tmp/mysql.sock

こちらも調べてみると、いろいろと出ているようで、みなさん
解決方法をいろいろと書いてくれていました。

僕が参考にさせていただいたのは、「83's」さんの方法です。

僕の場合はこんな感じでした。

$ mysqladmin -p version
Enter password:
mysqladmin Ver 8.41 Distrib 5.0.27, for apple-darwin8.5.1 on i686
Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL license

Server version 5.0.27-standard-log
Protocol version 10
Connection Localhost via UNIX socket
UNIX socket /tmp/mysql.sock
Uptime: 10 min 56 sec

Threads: 1 Questions: 11 Slow queries: 0 Opens: 12 Flush tables: 1 Open tables: 6 Queries per second avg: 0.017

とうことで、「/tmp/mysql.sock」をconfig/database.ymlに設定してOKでした。

development:
adapter: mysql
database: test
username: test
password:
host: localhost
socket: /tmp/mysql.sock

どうしてこうなのか?ということ自体がまだわかっていないので
その辺をちゃんと理解できるようにしていかないとなぁ。。

Railsの「LoginEngine」設定時のエラーと対処方法

LoginEngineのプラグインのインストール後、設定しようとし

$ rake db:migrate:engines:login_engine

をしても

rake aborted!
Don't know how to build task 'db:migrate:engines:login_engine'

と出てダメ。。。

いろいろと調べてみると、この辺のコマンドはバージョンによって
他のファイルへの設定も含めてどんどん変わってきているようです。

で、最終的に参考にしたのはこちらのサイトです。

pulscope.ruby


非常に詳しく書いてくれています。本当に助かりました。

他の人が解決した問題なども見ていると、Railsのバージョンだけでなく
プラグインのバージョンもひっくるめて設定方法がいろいろと
変わってきている様子。

今読んでいる本も既に情報が古いようです。。
これはまいった。。

今回のように、いろいろと試してアップしてくれている人がいるのは
本当にうれしいです。

また、僕がやったときに、上記のサイトで紹介してくれていたのと
若干違っていた箇所がありましたので、参考までに以下に記載します。

・プラグインのインストール

こちらは、前回のエントリーでも書いたように、僕のところではプラグイン名だけでは
なぜかインストールができず、URLを直接入力する方法で、インストールできました。

・Login Engineのマイグレーション

こちらは、上記のサイトでは

$ rake migrate
# $ rake db:migrate

とありましたが、僕のところでは、

$ rake migrate

だと、

rake aborted!
Lost connection to MySQL server during query

となってしまいました。

$ rake db:migrate

コチラで無事にいけました。

このエラーの対処で、また丸々1日時間が過ぎてしまった。。。

>pulscopeさん

本当にありがとうございました!

Railsの「LoginEngine」インストール時のエラーと対処方法

Railsのプラグインである、LoginEngineをインストールしようとしたら
エラーが出て、全くダメ。。。

調べてみたところ、同様の現象が出ていて、対処方法も書いてくれている方がいました。

システムとは何か? -[Ruby][linux]LoginEngineをインストール-

直接URLを入れればOKだったようです。

$ ruby script/plugin discover http://agilewebdevelopment.com/plugins/scrape

$ script/plugin install http://svn.rails-engines.org/plugins/engines

$ script/plugin install http://svn.rails-engines.org/plugins/login_engine

>shingotadaさん

ありがとうございました。助かりました。


ちなみに、LoginEngineについてはこちらで詳しく紹介してくれています。

pylori*style wiki -LoginEngineを使ってみる-

LoginEngineとは?

LoginEngineは RailsEnginesの一種で、Railsアプリケーションに
ユーザ認証の機能を付加するためのものです。
Engine とは、Railsアプリケーションに(既存のコードを変更することなく)
いろいろな機能を付加するプラグインです。

もともと SaltedHashLoginGeneratorという名前でジェネレータとして
提供されていたものを Engine として再実装したのが LoginEngine です。


Powered by ScribeFire.

「ライド・オン・Rails」のサンプルソースのダウンロードと正誤表

今Railsを勉強するにあたって参考にしている『ライド・オン・Rails』の本ですが
その作者の方がご自分のサイトで、サンプルソースのダウンロードと
正誤表を公開しています。

『ライド・オン・Rails』サポートページ

エラーが出て、どうしても分からない時などは、こちらのサンプルソースと見比べて
見たり、正誤表を参照すると、分かることが多くありました。

正誤表などはリアルタイムで更新してくれるかと思いますので、
こういった時のWEBは本当に便利です。

Rails + MySQL の文字化けが直った!

Rails + MySQL にて始めて、思いっきり躓いたのが「文字化け」でした。
初心者への最初のこのハードルは、解決するのに約3日間かかりました。。。

以下のサイトで対処方法を教えてくれています。

从・ゥ・从<とか言ってw:文字化け問題を本気で直す

問題になっていたのは、Railsではなく、MySQLの文字コードでした。

最初疑ったのは、Rails上での何か設定の問題がないか、ということ。
ネットと本で調べてみると、文字化けが出ている人が非常に多かった。

ただ、そこで出ていたRails上への対処方法を全て試してみたけど
全く解決せず。。

その流れで、MySQLについて触れている方がいましたので、
調べていくと、上記のサイトに見つかりました。

直りましたよー!本当に嬉しい。
モニターがちょいにじみましたよ。。ホント。。

ただ、初心者の僕にとって、上記の中で分からない箇所が1つありまして
そこについて、どうやったかを以下に記載します。

それは、「/etc/my.cnf の設定」という箇所。

これは、RailsとかMySQLとかではなく、UNIXというものを少し
理解する必要があるようでした。

参考にしたサイトと本は以下です。

MySQL 文字化けを防ぐ、文字コードの確認と設定

たのしいUNIX—UNIXへの招待

「MySQL 文字化けを防ぐ、文字コードの確認と設定」にて、

/etc/my.cnfが無いときは
インストールしたMySQLの中のサンプルをコピーする。
# cp /usr/local/mysql/support-files/my-medium.cnf /etc/my.cnf

とありました。

なので、Terminal上で、まず

$ cp /usr/local/mysql/support-files/my-medium.cnf /etc/my.cnf

を入力します。

UNIX上で「cp」はコピーを意味するそうです。
そして、上記のコマンドは
「/usr/local/mysql/support-files/」という階層にある
「my-medium.cnf」というファイルを「/etc/」という階層の中に
「my.cnf」というファイルとしてコピーということになるようです。

これを入力後、「etc」というディレクトリに移動します。

$ cd /etc

そこで、そのディレクトリにあるファイルの一覧を見ることができる
コマンドの「ls」を入力すると、ずらーっと、ファイル一覧が表示されます。

$ ls

その一覧の中に「my.cnf」があることを確認します。

そして次に、この「my.cnf」というファイルの内容を見ます。

$ cat my.cnf

「cat」というコマンドは、指定したファイルの内容を表示するコマンドです。

これを入力すると、ずらーっと100行以上の内容が表示されます。

次に、そのファイルの内容を編集する訳ですが、それには「vi」というのを
使用します。
※「vi」についてはコチラがよさそうです。
 僕は先ほど紹介した、「たのしいUNIX—UNIXへの招待」を見ながらやりました。

$ vi my.cnf

と入力し「Entere」を押します。

E325: ATTENTION
 ・・・・
-- More --

と表示されますので、そのまま「Enter」を押します。

すると「-- More --」の箇所が「[O]pen Read-Only, (E)dit anyway, (R)ecover, (Q)uit, (D)elete it:」と
なりますので、キーボードの「e」を押します。

「e」を押したら、my.cnfのファイルの一番上から表示されます。
これで、その内容を編集できるようになります。

スクロールは、キーボードの「↓」を押すと行けます。

[mysqld]の箇所に、先ほどのサイトにあったように

[mysqld]
default-character-set=utf8
skip-character-set-client-handshake

を入力します。

そして、「esc」を押すと、再度コマンド入力モードになりますので、
「:w」を入力します。
そうすると「"my.cnf" 158L, 4979C written」が表示されます。

次に、viを終了するための「:q」を入力します。

念のため、「$ cat my.cnf」を入力し、先ほど入力した内容が反映されているか確認します。

反映されていたら、「从・ゥ・从<とか言ってw:文字化け問題を本気で直す」に戻り
続きをそのまま行います。

これで、直ると思います。

初心者にとっては、UNIXのコマンドとviのコマンドをある程度覚えないと
いけないなぁと思った文字化けの出来事でした。。

しかし直って本当に嬉しいよぉ。。。

MySQLの「#42000Access denied for user ''@'localhost' to database 'sample'」というエラー

rakeコマンドでマイグレーションを行うという箇所で、以下のようなエラーが出ました。

rake aborted!
#42000Access denied for user ''@'localhost' to database 'recipe3_development'

(See full trace by running task with --trace)

調べてみると、教えてgooの中で「権限」の話が出ていました。
※しかし、プログラミング関連で、はてなの人力検索よりも
教えてgooのほうがいろいろと見つかるのは意外だった。。。
この他にもいろいろと見つかります。教えてgoo便利ですね。

そこにあったリンクをたどると、テーブル対しての権限を与える箇所についての詳細が
こちらにありました。

今回のチュートリアルの中で、テーブル作成と権限の与える箇所がありました。

mysql> create database recipe3_development;
mysql> grant all on recipe3_test.* to recipe3@localhost;

この「grant」文で、作ったデータベースで、ユーザー「recipe3」に
アクセス権減を与える訳ですが、僕はここの「recipe3@localhost;」という
箇所をチュートリアルのままやっていたので「recipe@localhost;」と
したままでした。

そのため、先ほどのエラーが出たようです。


Powered by ScribeFire.

MySQLの「ERROR 1007 (HY000)」というエラー

最初に作ったのが、どこをどうしていいかさっぱり分からない状態に
なってしまったので、最初からサンプルを作り始めました。

そして、テーブルを作成しようとした時にこのエラーが出ました。

mysql> create database recipe_test;
ERROR 1007 (HY000): Can't create database 'recipe_test'; database exists

これは、こちらにて紹介されていましたが、

このエラーはデータベースを作成しようとしたときに、すでに同名のデータベースが存在していた場合に表示されます。
既存のデータベースと重複しないデータベース名を指定すれば、このエラーは解消します。

なるほどぉ。

MySQLでいこう!さんありがとうございました。


Powered by ScribeFire.

MySQLの「command not found」というエラー

いきなり Ruby on Rails ではないのですが、おそらく利用することが多いと
思う、MySQLについてのエラーが出ました。

$ mysql -u root -p

というコマンドを打った際に

-bash: mysql: command not found

となってしまいました。

詳しくは分からないのですが、「パス」というのが通っていないために
このコマンドが必要な場所に届かなかった、らしい。

解決方法としては、どこかのファイルに直接書き込むとよいらしいのですが
そのファイルが、Macではどこかよく分からなかったので、僕は今
Terminalを立ち上げて、そこに直接以下を打ち込んでいます。

$ export PATH=$PATH:/usr/local/mysql/bin

そうすると、

Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 29 to server version: 5.0.27-standard

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>

となり、無事に行けるようになります。

また、「Enter password: 」は何も入力せずにそのまま「Enter」を押してします。


Powered by ScribeFire.

Ruby on Rails を覚えたい

なにやらいろいろと話題のRuby on Rails を始めました。

といっても、プログラミングのど素人です。

なぜ始めたかというと、まずはこういうの欲しいなぁという
WEBアプリのイメージがあって、それを作ってみたい、ということと、
いろいろと知らないと始められないプログラミングというより
決まった動作を簡単なコマンドで動いてくれて、細かいところなどは
都度調べてやっていけそうな、Ruby on Railsが入りやすかった、
ということ、
で、あとは、37signalsがかっこいい感じがするということ、です。

今までは、MSのAccessを使って、テーブル/クエリ/マクロ/フォームと
簡単なVBAを意味も分からず探して追加して、いくつか仕事で必要な
ツールなどは作ったことがあったこと、VBScriptをちょこっと意味もあまり
分からず、「ここをこうすればこうなる」ということだけを覚えて、
ちょっとだけやったことがあるだけでしたが、そんな僕に果たして
Ruby on Rails が使えるようになるのか?

環境は、
マシン:MacBook
OS:MacOSX10.4
DBはMySQL
です。

困ったことで、解決したことなどもできるだけアップし、
これから僕くらいの素人の人が始めた時に参考になれば
嬉しいです。

ちなみに、勉強方法は、
一緒に仕事をしている社長さんが、長年プログラミングを行っており、
いろいろと非常に詳しいのですが、Rubyはほとんど触ったことがないそうで、
「Rubyはちょっとわかんないっす」と言いながらもいろいろと教えてくれる
ありがたい身近な先生として、後はネットで様々探しながら、
そして本は一冊「ライド・オン・Rails Ruby on Railsを徹底攻略
というのを利用し、基本この本にそって、分からないことは、社長や
WEBで調べながら進める、という感じになります。

ライド・オン・Rails Ruby on Railsを徹底攻略


できるかなぁ。。

一つ一つやっていきまっす。

Home > Ruby on Rails

Search
Feeds
Contact
  • yukaigi@gmail.com
Want to see and hear
Ads

Page Top