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

2012年10月11日木曜日

改行コードでこける


Rubyで


f = open('test.txt')
puts f.readlines
f.close

しても全行表示されなくて困っていたのだが、
どうやらtest.txtの改行コードがCRになっていたのが問題だったよう…

なにこれ気づかないよ!!!!!!!!
わあああああ

2012年7月13日金曜日

sinatra × shotgun が超絶に便利

sinatraでアプリをつくっているとき、
ローカルで確認をしたいとき、shotgunっていうgemを使うとべんり!

gemインストールして、
開発中のアプリのディレクトリに移動し、
ターミナルで
shotgun -O app.rb
ってやると、

http://127.0.0.1:9393/
でみれるようになる。

簡単過ぎわろんぬ。

2012年6月12日火曜日

CentOSにRubyをいれる(2)

前回の記事↓
http://ikezawa-ayaka.blogspot.jp/2012/06/centosruby1.html

今回はRVMにRubyをいれていきまそ!!!

最新のにアップデートしてるかな?いちおアップデートのコマンドを。
# rvm reload

ついでにバージョンも確認

# rvm --version
rvm 1.14.1 (stable) by Wayne E. Seguin <wayneeseguin@gmail.com>, Michal Papis <mpapis@gmail.com> [https://rvm.io/]

#rvm list known
使えるものリストがだーっとでてくる。

#rvm install 1.9.3
1.9.3をダウンロードする。

#rvm list
インストールしたrubyのリストがでてくる。

# rvm use 1.9.3
1.9.3を使うよ。

# rvm use 1.9.3 --default
1.9.3をデフォルトで使うよ。

私はこれにSinatra入れた。
# gem install sinatra

Rails使う人は、gemsetを使うと、さらにRailsのバージョン管理ができるよ。

【前の記事】

2012年6月11日月曜日

CentOSにRubyをいれる(1)

CentOS5.8(32bit)にRubyをrvmで入れた記録。

CentOSの64bitだと若干やりかた違うみたい。
それは以下参照で。
http://d.hatena.ne.jp/tetsuyai/20110716/1310778295

sudoがけっこうでてくるので、root権限になる。
$ su -

でね、こうコマンドを打つ。
# yum install curl*
ここは64bitだとやりかたでてきたんだけど、32bitだとやり方がでてこなくって、正直適当(笑)

でもバージョン確認してみると一応入っている(笑)
# curl --version
curl 7.15.5 (i686-redhat-linux-gnu) libcurl/7.15.5 OpenSSL/0.9.8b zlib/1.2.3 libidn/0.6.5
Protocols: tftp ftp telnet dict ldap http file https ftps
Features: GSS-Negotiate IDN IPv6 Largefile NTLM SSL libz 


次、gitを入れる。
参考にしたのは以下のサイト。
http://d.hatena.ne.jp/tututen/20120216/1329357541
# wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.i386.rpm
# rpm -Uvh rpmforge-release-0.5.2-2.el5.rf.i386.rpm
# sed -i 's/enabled = 1/enabled = 0/g' /etc/yum.repos.d/rpmforge.repo
# yum --enablerepo=rpmforge list | grep git
# yum -y --enablerepo=rpmforge install git

gitちゃんとはいっているかしら?

# git --version
git version 1.7.10.4
入っているね。

お次!RVM!
RVMはすぐダウンロードのURLが変わるから嫌いだ!
参考にしたサイト

# bash -s stable < <(curl -s # bash -s stable < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer)

これ打ったら、だあああっと文章がでてくるよ。

でもね。多分何もエラー出てこないでちゃんとできたと思うんだけど、rvmのコマンドが動かない。なんでだろ。

ま、いちお、CentOS再起動してみっか、と再起動してみたら
うごいたァァァアアアア

ちょっといらついた。
なんなんですか。

まあいいや、次回RVMにRubyをインストールしていこ。

【次の記事】





2012年4月27日金曜日

herokuでsqlite3を使おうとしたら詰んだ

-----

追記:Redis To Go を SQliteのかわりに使ったらわりと簡単に実装できました。
このアドオンおすすめです。

使い方もドキュメントに簡単に書いてある。
https://devcenter.heroku.com/articles/redistogo

-----

結論から言うと、herokuでsqlite3は使えないらしい。
postgresqlを使うらしい。

何時間もこれで詰んでたからすごく悲しい。

herokuマスターにたずねたところ、Redis To Goというherokuアドオンを代わりに使うとよいみたいです。これはNoSQLデータベースの一種で、ハッシュをデータベースのように扱えるようにしたようなかんじのものらしい。

使い方あんまりわからないので、HerokuでMySQL使えるようにした方が楽なのかなあと思ったり。

2012年4月25日水曜日

HerokuにRubyのコードをUPする

----
追記:
現段階では動いてはいますがサイトURLに飛べないです。
アプリケーションエラーがまだ消えてませんでした。

追記の追記:
プログラムを動かしながら、webプロセスを確保するには2dyno必要らしいので、課金しないとむりっぽいです。workingのdynoを1、webのdynoを1確保します。
その後、Procfileにあたらしくwebアプリに関する記述を追加し、
(私は「web: bundle exec thin start -p $PORT -e $RACK_ENV」って書いております)
$ heroku ps:scale web=1
とかすれば飛べるようになります。
でもherokuではプログラムからjsonへの書き出しが保証されていないみたいで、
結局この方法では実装できなかったという…w

----

RailsアプリをHerokuにUpしている例はたくさんあったのですが、RubyでかかれたコードをUpしている例は少なかったのでメモ。

はじめ、
・test.rb
・test.json
の2つのコードしかいれずにgit push heroku masterしたらpushできなかった。

いろんなサイトにこういう時はindex.phpのファイルをおけばいいと書いてあるが、
私が書いているのはphpじゃなくてrubyである。
index.phpをいれるとphpのコードとして認識されてしまう。

わからなすぎてHerokuの知り合いに質問してみると、
GemfileをいれるとRubyのコードとして認識されるらしい。

ほほー。

でもGemfileになに書いていれとくんだ?
まあとりあえずGemfileにはつかったgemをかいておいた。
それでbundle installしておいた。
やり方あってるのか心配だー

で、この段階でのfile構成

・test.rb
・test.json
・Gemfile
・Gemfile.lock(Gemfileをつくってbundle installしたら自動でできる)

これでもたしかダメだよってherokuさんに怒られた。
どうやらProcfileというものをつくらなきゃいけないらしい。

英語の資料あったぜ!
https://devcenter.heroku.com/articles/procfile

Procfileに関しては日本語資料がまだまだ少なくて、あんまり書き方わからない…

clockworkを使って、定期的に動くコードを書いていたので、
Procfileには
clock: bundle exec clockwork test.rb
と書いておいた。

clockwork参考資料:
Herokuでcron?もう古いかも、それ

ここのサイトすごく参考にさせてもらった。
それにしてもclockwork便利すぎてやばい。
1秒ごとにコードを動かしたりできる。なんかcron以上にすごい。

で、この段階のファイル構成。

・test.rb
・test.json
・Gemfile
・Gemfile.lock
・Procfile

これで、git push heroku masterは通るようにはなったんだけど、
heroku logs --tailでログをみているとエラーがでている模様。
これはアバウトに言うとwebアプリじゃないのにwebアプリの経路を断ち切っていなかったのが原因みたいで、

$ heroku ps:scale clock=1
とコマンドうったら治った。

なぜclock=1と書いているかというと、Procfileにclock: bundle exec clockwork test.rbと書いて、アプリ名をclockにすると指定したから。
1というのは1dynoをこのアプリにわりあてますよって意味らしい。
Webアプリは自動で1dyno確保しているけど、webアプリじゃないと自分でやらなきゃいけないらしいのです。
dynoって何?とりあえずよくわからないけどdynoってやつがわりあてられると動くらしい。

とりあえずこれで動くようになった!!わーい!!


で、この段階のファイル構成。

・test.rb
・test.json
・Gemfile
・Gemfile.lock
・Procfile
・index.html.erb

あ、なぜindex.html.erbが増えてるかというとね!
先輩にherokuでコードを共有しつつ作業をしていたら、
いつのまにかindex.html.erbを足してくれていた。

理由は正直よくわからないけど、まあ動いたからいっか。
index.phpを加えるのと同じノリなのかしらね。
(適当でごめんなさい)

以上、Herokuに関する適当なメモでした。

2012年4月20日金曜日

herokuで複数アカウントを管理する

----

追記:
複数アカウントを導入すると、どうしてもエラーまみれになってしまってうまくいかなかったので、複数アカウントにするのを諦めました。
しかし、もし複数アカウントでやるならどうやらaccountのプラグインを使うのが一番良いみたいです。

・heroku-accountsプラグイン
http://journal.sooey.com/162
・わたしはheroku-accounts導入しようとしたらいろいろこけまくって諦めてしまった。ねばって成功した人もたくさんいるみたいなので、とりあえず上のサイトを参考にしながら試してみるとよいかもしれない。

----

ayuminさんのところに詳しくは書かれていた。
http://d.hatena.ne.jp/ayumuaizawa/20120120

けれど、一応自分でもメモメモ。


$ heroku login
Enter your Heroku credentials.
Email: (herokuに新しく登録したアドレスを記入)
Password: (herokuのパスを入れる)

そしたらどっちのssh使うの?ってでてきた。

Found the following SSH public keys:
1) github_rsa.pub
2) id_rsa.pub
Which would you like to use with your Heroku account? 

ふええ〜 どっちだっけ〜 忘れちゃったよ〜

考えてみるに、多分(1)がgithubに登録したやつで、(2)が前にherokuに登録したとき発行したやつかなあ、多分。多分。

というわけで再びssh発行。


$ ssh-keygen(ようっし!発行!)
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/ikezawaayaka/.ssh/id_rsa): /Users/ikezawaayaka/.ssh/td_rsa(td_rsaとどのアカウントで使っているのかわかりやすい名前にしてみたキリッ)
Enter passphrase (empty for no passphrase): (普通にエンターでok)
Enter same passphrase again: (普通にエンターでok)
Your identification has been saved in /Users/ikezawaayaka/.ssh/td_rsa.
Your public key has been saved in /Users/ikezawaayaka/.ssh/td_rsa.pub.
The key fingerprint is:
28:bc:c4:06:a2:93:e3:92:06:cd:42:84:c9:36:5d:7c ikezawaayaka@ikezawa-ayanobana-no-MacBook-Pro-2.local
The key's randomart image is:
+--[ RSA 2048]----+
|oo. o.           |
|++ . . E         |
|o.o   .          |
|o= +   .         |
|B o * . S        |
|o= o o           |
|oo  .            |
|o                |
|                 |
+-----------------+

これでsshが3つになりまして、


$ heroku login
Enter your Heroku credentials.
Email: (メアド入力)
Password: (パスワード入力)
Found the following SSH public keys:
1) github_rsa.pub
2) id_rsa.pub
3) td_rsa.pub
Which would you like to use with your Heroku account? 3(3番目のつかうぜ!)
Uploading ssh public key /Users/ikezawaayaka/.ssh/td_rsa.pub


無事herokuに複数アカウントでログインできたわけであります。




2012年4月17日火曜日

Ruby on Railsでのアプリ開発の基本

今回は簡単なRailsアプリの開発をMac OS X でやっていきます。

・Ruby on Rails とは
Ruby on Rails(ルビーオンレイルズ)はオープンソースのWebアプリケーションフレームワークである。RoRまたは単にRailsと呼ばれる。その名にも示されているようにRubyで書かれている。またModel View Controller(MVC)アーキテクチャに基づいて構築されている。(Wikipediaより)

・開発環境を整える
MacにはRubyがデフォルトではいっています。
Rubyのバージョンを確認してみます。
ターミナルを開いて、以下のコマンドで確認します。
$ ruby -v
ruby 1.9.3p0 (2011-10-30 revision 33570) [x86_64-darwin10.8.0]
続いて、Railsのバージョンも確認してみましょう。
$ Rails -v
Rails 3.2.1

Rubyのバージョンは1.9以上が望ましいので、1.9以下の方はアップデートを推奨します。
Railsはデフォルトでは入っていないので、インストールしましょう。

Railsのインストールは、
Macportをインストール後、
$ sudo port install rb-rubygem
$ sudo gem install rails
とコマンドをうち、Railsを導入します。

余談ですが、RVMとgemsetを利用して、RubyとRailsのバージョン管理をするととても便利です。

・簡単なアプリを作る
はじめてのアプリの定番はやはりToDoリストです。
本当にあっという間にできて感動します。

$ cd
$ rails new todo
$ cd todo

cdコマンドで、一番下の階層に移動し、rails new で新しいアプリを作成します。
今回はToDoリストをつくるので、アプリ名は「todo」とします。
そして再度cdコマンドで今度は新しくできたtodoのファイルへ移動します。

$ rails g scaffold note body:text title:string
$ rake db:migrate
rails g scaffold note body:text title:stringで、本文とタイトルが入れられるToDoリストを作ります。noteは適当につけた今つくった機能の名前です。アプリ名とかぶらないように気をつけます。
次に、rake db:migrateでtodo情報を登録するためのデータベースをつくります。
またまた余談ですが、firefoxのアドオンでSQLite Manegerというものがあるのですが、
このアドオンを入れるとデータベースを可視化することができます。

早速ブラウザで確認してみましょう。
ローカルでサーバーを立てて、確認。
$ rails s
ブラウザで「http://localhost:3000/notes」を開いてチェックしてみましょう。

ちゃんとこうなっていれば成功。



New Noteからいろいろと追加してみましょう!


以上で簡単にToDoアプリができました。

  • herokuで作った簡単にアプリを公開することができます。
  • twitter bootstrapを使うと見た目を簡単にtwitter風にすることができます。


2012年3月20日火曜日

hetemlにRubyGemを入れる

参考にしたのは以下のブログ
http://d.hatena.ne.jp/takkkun/20100313/1268503864
http://weble.org/2010/07/08/heteml-rubygems-install

組み合わせないと私の環境では動かなかったというw

まずは場所を確認。
$ ls
webとappsのこの2つがある領域へ。
(もし違う場所にいたら $ cd するなりする)

RubyGemsのインストール先ディレクトリを作成。
不可視ファイルつくるよ〜
$ mkdir .gem
適当にディレクトリを作ってRubyGemsのソースをダウンロード
$ mkdir src
$ cd src
$ wget http://rubyforge.org/frs/download.php/69365/rubygems-1.3.6.tgz
$ tar zxf rubygems-1.3.6.tgz$ cd rubygems-1.3.6
vimを起動してソースコードを修正する
本当はこのままgemをダウンロードすればいいらしいんだけど、
パスが違うらしく、このままではコケてしまうらしい。
$ vi lib/rubygems.rb
vimでの編集はここを参考にしておく
http://www15.ocn.ne.jp/~tusr/vim/vim_text0.html

vimで検索なんかして、
:bindir => RbConfig::CONFIG["bindir"],
という項目を見つける。

その項目を、
:bindir => '/usr/bin',
とする。

で、修正したらインストール
$ ruby setup.rb --prefix=~/.gem
その後、環境変数なるものを設定しなくてはいけないらしい。
$ export PATH=$PATH:~/.gem/bin
$ export RUBYLIB=$RUBYLIB:~/.gem/lib

これでインストール完了。
試しにgemのバージョンを確認してみる。
$ gem -v
1.3.6
バージョン確認ができれば成功。

2011年10月25日火曜日

破壊的メソッドと非破壊的メソッド

Rubyの破壊的メソッドと非破壊的メソッドの違いがイマイチ把握できなくてあうあう言ってた時に素晴らしくわかりやすい説明が載ってるサイトがあって感動。

以下引用。

・非破壊的メソッド
・オブジェクト および レシーバの内容に一切影響を与えないメソッド
・upcase(大文字にする)
・downcase(小文字にする)
・capitalize(先頭の1文字を大文字に残りを小文字にする)
※これらは、非破壊的メソッド
例えば
str = "olympic"
p str.upcase #=> "OLYMPIC"
p str #=> "olympic" 変わっていない
p str.downcase #=> "olympic"
p str #=> "olympic" 変わっていない
p str.capitalize #=> "Olympic"
p str #=> "olympic" 変わっていない
> 確認した

・破壊的メソッド
・オブジェクトの中身を直接置き換えてしまう
・非破壊的メソッドと一緒に用意されている破壊的メソッドは、
「非破壊的メソッドの末尾に !」がついた形式となっている
・upcase!(大文字にする)
・downcase!(小文字にする)
・capitalize!(先頭の1文字を大文字に残りを小文字にする)
※これらは、破壊的メソッド として用意されている
str = "olympic"
p str.upcase! #=> "OLYMPIC"
p str #=> "OLYMPIC" 変わった
str = "olympic"
p str #=> "olympic" 初期化
p str.downcase! #=> nil が返る
str = "olympic"
p str #=> "olympic" 初期化
p str.capitalize! #=> "Olympic"
p str #=> "Olympic" 変わった
> 確認した

2011年8月13日土曜日

Ruby合宿2011 夏

島根県で開催された、「Ruby合宿2011 夏」に関しておもうこと。

「Ruby合宿2011 夏」は、島根県松江市にある企業「株式会社イーストバック」主催で行われている、5日間でRubyの基礎を学べるというなんとも素敵な合宿です。
期間は8月8日から8月12日までの5日間。

参加者はRubyを学びたいって思ってる若者たち。
島根県民:他県民 = 1:1くらい。全部で25人前後だった気がする。
男性が多いのかなとおもってたら、案の定女子が2割くらいしかいなかった。

この合宿、最終的にはチームでRubyを使ったゲームを作ることになったのだけど、
男子が主にコード、女子が主にデザインを担当していて、
男女割合的にはちょうどよかったのかなーと思ったり。

私は、TwitterのTLでたまたまこのイベントを見つけて即応簿。

「Webの骨組み部分はRubyで作ってるよ」
というWebサービスを作っている友人のかっこいい一言を思い出し、
「RubyってWeb実装に使えるんだったよね?是非とも習得したい!」
ということで参加を決意した。
(合宿に参加してから、Web実装で使えるのはRuby On Railsのことであったと知る)

そんなことも当時の私はつゆ知らず……


松江についたと同時に花火がお出迎え。
テンションあがるー!

だがしかしこの後、ネカフェで一夜を過ごすことになる。
(駅からめっちゃ遠かった。荷物重いし死ぬかと思った)

そんなこんなでとりあえずRuby合宿というイベントに参加することになった。




そんなかんじで適当に参加したRuby合宿だったわけだけど、

世界的に有名なプログラミング言語Rubyの開発者であるまつもとゆきひろさんが、
こんな30人前後のしかいない参加者たちのために講演してくださってて、
ああ、これはそうとうアツい合宿に来てしまったのかもしれないと自覚しはじめる(遅い)。

松江市に引きこもりなのかな?と思ってたら、
宿泊場所は出雲市だった!


宍道湖目の前だよ〜!来てみたかったよ〜!

おおざっぱな合宿のスケジュールはこんなかんじ。

1日目:まつもとゆきひろさんの講演
2日目:Rubyの基本的な使い方の講習
3日目:チームでゲーム作り
4日目:チームでゲーム作り
5日目:発表、島根県企業巡り

Rubyの基本的な使い方の講習を受けた後、
いきなり通信対戦型ゲームを作れというチーム課題を出され、
(サンプルコードもかなりむずかしい)
3日目からはずっと真剣にプログラミングやら画像編集やらしてた。

使っていた本は「たのしいRuby」。使い勝手はまあまあ。



うちのチームも作るゲーム&分担がさくさく決まり、
わりと順調に進んだ気がする。

でもやっぱり初心者がいじるにしてはすごくむずかしいコードだったので、
ややこしいコードをいじっているのは専らC++を結構やりこんでるチームリーダーだった。

C++もRubyと同じオブジェクト指向だから、慣れるとさくさく書けるらしい。
私ももうちょっとがっつりコード書きたかった。(←主に画像編集担当)


こんなゲーム作ったよ。パックマンの島根バージョンみたいなもの。
シジミを多く食べた方が勝ちっていうゲーム。



しかし、「チームで楽しんでプログラミングをする」という経験はなかなかできない経験。

コード書く分量が少なめだったとはいえ、まがりなりにもちょっとは書いたし、
この合宿に来てRubyに対するモチベーションあげることができた。

プログラミング大好き人との出会いもたくさんあり、私にとってかなりプラスな経験になったとおもう。


5日間でうっすら基礎が理解できたので、これからは1人で、たまにRuby合宿で出会ったひとたちの力を借りながら、理解を深めていきたい。


島根県、ぜんぜん観光してないけど、
島根に住む人達と生活をともにするという、
観光じゃできないなかなかいい体験ができた。

まつもとさんをはじめとする、島根の大人たちともちょっと仲良くなれた。
サインももらってしまった!

コードも楽しいけど、こういう風に人の縁が広がっていく瞬間はもっと大好きです。

Ruby関連の行事とかあればまた島根来たいな。

あと、今回全然観光できなかったので、次回は観光でも来たい。
そういえば出雲大社も鳴き砂も体験してないなあ。

うむ。Rubyとあんま関係ない話題で記事を締めくくります。