2009年8月9日日曜日

[fedora11] rubyからmysqlを使う

なぜか

gem install mysql

でインストールできない、あらゆるオプションを試したが無理。

yum install ruby-mysql

でインストールできた。


なんだこれ、どういうことかわからなーい

[追記]

gccが入ってなかった(恥ずかしすぎる)

gccを入れた後

gem install mysql -- --with-mysql-config --with-mysql-lib=/usr/lib/myql --with-mysql-include=/usr/include/mysql

でOK!

2009年7月30日木曜日

ruby on rails インストール後のエラー達

railsのインストールは簡単

gem install rails --include-dependencies

でできる。

プロジェクトの作成は

rails [プロジェクト名]

でできる。ここでエラー

SSLEAY32.dllがありません。ウェブで調べてSSLEAY32.dllを持ってきてruby/binに入れればOK。

とりあえず作ったプロジェクトのwebサーバを起動

ruby script/server

OK。


コントローラを作成。

ruby script/generate controller [コントローラ名]

OK。(ここではコントローラ名はDispとした、作成されるファイル名はdisp_controller.rb)

アクションを作成。

---------------------------------------------------------------------
def [アクション名]
end
---------------------------------------------------------------------

OK。(ここではアクション名はhelloRailsとした)


ビューを作成。

ファイル名はhelloRails.rhtml

内容は適当なhtml書けばいい

OK。


ブラウザから動作確認してみる

http://localhost:3000/disp/helloRails

ここでエラー。

500 internal server error

エラーログを見てみると

「sqlite3にアクセスできません」と書いてある。

あたりまえだw sqlite3入ってないしw

どうやらデフォルトでsqliteを使うことになってるらしい(Rails 2.0.2)

mysqlを使いたい人は、プロジェクト作成のときに

rails -d mysql [プロジェクト名]

でプロジェクトを作成すれば良いらしい。


もう一回動作確認。

また500 internal server error

エラーログ確認

access denied user root@localhost password:NO

あーパスワード設定しなきゃいけないのか

config/database.ymlをいじってパスワード設定。(見ればすぐ分かるはず)



もう一回動作確認

また500 internal server error

エラーログ確認

unknown database hello_development

そりゃそうだ、そんなデータベース作ってないし。

じゃあ作る。

----------------------------------------------------
mysql -u root -p
Enter password: **********

mysql> create database hello_development;
----------------------------------------------------


もう一回動作確認。



出来たーーーーーーーーーーーーーーーーー(感動)

てな感じで。でてきたエラーこんなもん。

2009年7月16日木曜日

mysqlのアンインストール

MySQLのアンインストール・・・、やっかいだぜ


MySQLを「プログラムの追加と削除」からアンインストールするとゴミが残るらしい。


そのゴミのせいで新しくMySQLをインストールしても動かない。


Could not start the service MySQL.Error:0


このエラーが出る。


いろいろ調べた結果解決方法を見つけました。


アイビースター[Windows MySQLのアンインストール]


ふぅ、助かった。。。

2009年7月7日火曜日

rubyのちょっとしたメモ2 [例外処理]

何度調べてもすぐ忘れる(にわとり、いや、ひよこか)からメモする

[例外処理]

begin
# 例外が発生する可能性のある処理
rescue => e
# 例外が発生したときに行う処理、eには捕捉した例外が入る
else
# 例外が発生しなかったときに行う処理
ensure
# 例外が発生したかどうかに関わらず、必ず行う処理
end

<ソース>
------------------------------------------------------------
begin
 open('non-exist.txt')
rescue => error
 puts error
else
 puts 'ok'
ensure
 puts 'end'
end

begin
 open('exist.txt')
rescue => error
 puts error
else
 puts 'ok'
ensure
 puts 'end'
end
------------------------------------------------------------

<実行結果>
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
No such file or directory - non-exist.txt
end
ok
end
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^


こんなことも覚えられない(笑)

rubyのちょっとしたメモ [each]

何度調べてもすぐ忘れる(にわとりだ//)からメモする

[each]

each_indexでインデックスによるイテレーションができる。

<ソース>
---------------------------------------------------------
char = ['a', 'b', 'c']

char.each_index do |i|
 puts i
end
---------------------------------------------------------

<実行結果>
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
0
1
2
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^


each_with_indexでバリューとインデックスによるイテレーションができる

---------------------------------------------------------
char = ['a', 'b', 'c']

char.each_with_index do |c, i|
 puts i
 puts c
end
---------------------------------------------------------

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
0
a
1
b
2
c
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^


eachにはこんな使い方もある

---------------------------------------------------------
a = ['taro', 18, 80]
b = ['jiro', 16, 70]
c = ['tagosaku', 15, 100]

array = [a, b, c]

array.each do |name, age, score|
 puts name
 puts age
 puts score
end
---------------------------------------------------------

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
taro
18
80
jiro
16
70
tagosaku
16
100
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^



なるほど・・・、rubyおそるべし・・・。

2009年6月27日土曜日

[Ruby]シングルクォートをエスケープ

Rubyで正規表現を使ってシングルクォートをエスケープしようとした。

------------------------------
str = "I'm lovin' it"

str.gsub!(/'/, "\\'")

puts str
------------------------------

そしたらなぜかこうなった
(実行結果)
^^^^^^^^^^^^^^^^^^^^^
Im lovin' itm lovin it it
^^^^^^^^^^^^^^^^^^^^^


なぜだ・・・。意味が分からなすぎる。

いろいろ調べたけどどうしてそうなるのか分からなかった(笑)

で、結局違うやり方で

--------------------------------
str = "I'm lovin' it"

str.gsub!(/'/) do |m|
'\\' + m
end

puts str
--------------------------------

こうやったら

^^^^^^^^^^^^^^^^^^^^^^^
I\'m lovin\' it
^^^^^^^^^^^^^^^^^^^^^^^

ちゃんとできた。これで出来るならまぁいいか(妥協)




ちなみになぜシングルクォートをエスケープしたいかというと

RubyからMySQLにデータを入れるときにテキストでシングルクォートを入れたいから。

2009年6月24日水曜日

RubyでMySQLにアクセス

いやぁ大変だった。何も知らない状態から調べつつやるのって大変ね


無駄な手順があるかと思うけど踏んだ手順を全部書く


1, Ruby-1.9じゃだめと言われたからRuby-1.8を入れなおす

2, MySQL4.1を入れる

3, gem install mysqlでMySQL/Rubyを入れる

4, zlib.dllがないと言われるのでとって来たzlib.dllをruby/binに入れる

5, 以下のコードを動かしてみる

-------------------------------------------------------------------------------------
require 'rubygems'
require "mysql"

host = 'localhost'
user = 'root'
pass = 'rootpass'
dbname = 'test_ruby'

db = Mysql::connect(host, user, pass, dbname)

rs = db.query('select * from test_table')

rs.each do |item|
puts item[0]
end
--------------------------------------------------------------------------------------

6, 動いた!感涙・・・。





これ読んでも何も分からんね、また後で書き直そう