Ruby

Sinatra, OmniAuth メモ

遅ればせながら OmniAuth を使ってみた。とても便利だったのでメモしておく。 サンプル https://github.com/ymmtmsys/sinatra_omniauth_sample Sinatra, Omniauth, Slim Twitter のアプリ登録では、Access level を Read and write にしておく必要あり。 手…

Sequel で別名を付けたりテーブルを指定したりする

Sequel でカラムに別名を付けたり、どのテーブルのカラムなのかを指定する方法のメモ。 require 'sequel' DB = Sequel.sqlite Sequel::Model.plugin :schema class Tbl < Sequel::Model unless table_exists? set_schema do primary_key :id end create_tabl…

No space left on device

問題 gem ライブラリを幾つかまとめて update したところ No space left on deviceというメッセージが表示され、update は失敗した。 調査 メッセージの内容を見る限り HD の容量が足りなくなったのかと思い、df コマンドを打つも、特に異常なし。 % df -h F…

Symbol メモ

% irb ruby-1.9.2-p136 :001 > :foo => :foo ruby-1.9.2-p136 :002 > :"foo" => :foo ruby-1.9.2-p136 :003 > :"foo" == :foo => true ruby-1.9.2-p136 :004 > :foo-bar NameError: undefined local variable or method `bar' for main:Object ruby-1.9.2-p1…

デフォルト引数

とあるソースを読んでいて、分らなかった書き方があったのでメモ。 分らなかったのは次のようなコード。仮引数の書き方が ?。 def foo(value = (not_set = true)) p value, not_set end 例示は理解の試金石、ということで幾つか試す。 foo # true # true fo…

$LOAD_PATH.delete('.')

1.9.2 から $LOAD_PATH($:)にカレントディレクトリを含まなくなった、というを今頃知った。少しハマった。 http://www.ruby-lang.org/ja/news/2010/08/18/ruby-1-9-2-is-released/

Chat on Pusher

Pusher を使ってチャットアプリを作った。コレ → http://chatto.heroku.com/。バックエンドは相変わらず Sinatra。Twitter のアカウントを使ってチャットができる。チャットの内容をツイートしたりする機能はなし。 Pusher 周りは Pusher のサイトに Demo と…

RVM

RVM をインストールした。 % rvm use 1.9.2 --default --default を付けると、選択したバージョンが再ログイン時に適用される。

ping

iTunes に Ping という機能が付いた。昔 ping コマンドをネットワークの勉強がてら実装したことがあったのを思い出した。そのときは C 言語しか知らなかったので C で実装した。今は C 以外にも幾つか使える言語ができたので、それらで実装してみようと思っ…

たてよみったー

「たてよみったー」を作った。 特徴 縦読み文章が簡単に作成できちゃう 使い方 テキストボックスに縦読みさせたい文字を入れます おわり お役立ち指数 0 構成 Ruby Sinatra JQuery Twitter Streaming API

Sinatraでファイルをアップロードさせる方法

このまえ Sinatra でファイルをダウンロードさせる方法を書いた。では逆、アップロードはどうだろう?試したところ、次のようになった。 require 'rubygems' require 'sinatra' require 'haml' get '/' do haml :index end # アップロードされたファイルを返…

Sinatraでファイルをダウンロードさせる方法

attachment を使うと簡単にファイルをダウンロードさせることができる。例えば、CSVファイルをダウンロードする場合は次のように書ける。 require 'rubygems' require 'sinatra' get '/test.csv' do content_type 'text/csv' attachment 'test.csv' <<-EOS f…

文字列の中に文字列の中の文字がすべて存在する?

ある文字列 a の中に別のある文字列 b を構成する文字がすべて存在するかを調べる。 もう少し条件を加えると、b の文字の順番を保っていること。例えば、こんな感じ。 # OK a = 'xyz123' b = 'xz3' # NG a = 'xyz123' b = '3zx' # 順番が合っていない # NG a…

初めての MongoDB

MongoDB が気になったのでちょっと試してみた。なぜ MongoDB が気になったのかというと、Heroku の Add-ons で MongoHQ が使えるということなので。 Heroku 上で動作させることを前提としているので、言語は Ruby を使用。http://www.mongodb.org/display/DO…

Sass to CSS.

Sinatra を使うようになって Haml も使うようになった。Haml を使うようになって Sass も使うようになった。Sass は CSS を記述するための DSL。今まで CSS を書くときは CSS を直接編集してたけど、Sass を知ってからは直接編集しようなんて思わなくなって…

hashtagleメモ

先日、hashtagle という、Twitter のハッシュタグを検索するサービスを公開したという記事を書いた。そこでは書かなかった、公開するまでに起こったこと、気付いたことに関して書き留めておく。 構成 Heroku の上に Sinatra で構築。 ハッシュタグのソースは…

hashtagle 公開

Twitter のハッシュタグを検索するサービスを公開しました。サイトはこちら hashtagle。 hashtagleって? ハッシュタグの検索ができる。 日本語のツイートに含まれるハッシュタグが検索対象になる。 テキストボックスに入力された文字に近いハッシュタグを表…

Sinatra 1.0 Released

3月23日に Sinatra の 1.0 がリリースされた。 個人で作る小さなサイトにはちょうどいいフレームワーク(DSL?)なのでよく使わせてもらっている。なので、このニュースを聞いたときにちょっと嬉しくかった。おめでと〜。 1.0 では Tilt っていうのに対応した…

Ruby on Morse

Rubyのソースコード暗号化する「RubyEncoder」発売へ − @IT を見て、よーしパパ今から便乗して一儲けしちゃうぞー、と思ったとか思わなかったとか。 Rubyのソースコードモールス符号化する「Ruby on Morse」発表へ Rubyのソースコードをモールス符号化する…

ord

Ruby で 文字のコード値が欲しかったので p 'hoge'[0] ってやったら "h" だって。 いや、オレが欲しいのは Integer であって String ではないのだ。 で、 p 'hoge'.ord とすると 104 となるわけ。 2 文字目以降はこうでいいのかなと思い p 'hoge'.ord(1) と…

Sinatra, CGI

先日 Sinatra を CGI で動かそうとしてエラー*1が発生したりして手こずっていた。が、やっとこさ動くようになったのでちょいまとめ。 やったこと ディレクトリ構成 ロジックやテンプレ部分は DocumentRoot 下には置かない方針で。 /home/***/www/ # => Docum…

don't require me

最悪だ。 Sinatra を CGI で動かそうとして、原因不明のエラーが発生し、原因を特定するまでに半日くらい要した。 ソース #! /usr/local/bin/ruby require 'rubygems' require 'sinatra' get '/' do 'Hello world!!' end 実行方法 % ruby sinatra.rb エラー…

Include haml

久しぶりに Sinatra をさわった。テンプレートには Haml を使った。 Haml を書いていて、外部ファイル (別のHamlファイル) の読み込みはどうやるんだろうと思った。 検索してみたが、これだと思うような記事は見つからなかった。 じゃあ、ということで適当に…

require

PHP req.php string(14) "Hooooooooooge!" var_dump($piyo); # => string(12) "Hello world!" Ruby req.rb HOGE = 'Hooooooooooge!' piyo = 'Hello world!' main.rb require 'req' p HOGE #…

Ruby と PHP の違うところ

仕事で久しぶりに PHP を使うことになった。ここ最近は PHP よりも Ruby に触れている時間が多かったため、慣れる(というか、勘を取り戻す)までに時間が掛かった。そこで、PHP と Ruby で違うところを挙げてみようと思い立った。ちなみに、PHP は仕事で数…

Redmineをインストール

Redmine を Ubuntu9.10 へインストールしたときの覚え書き。Redmine は http://rubyforge.org/frs/?group_id=1850 より 0.8.5 をダウンロードした。基本的には公式ページにあるインストール手順に沿っただけ。そこにはには書かれていないが必要だった手順を…

RSpec で NoMethodError?

クラスを作った。RSpec でテスト。なぜか Failed。NoMethodError がスローされる。何度も何度も見直しても、どう見てもそのメソッドは定義してある。なのに NoMethodError。 一時間程して原因判明。RSpec の中のクラスの一つと、自分が作ったクラスの名前が…

defined? 1.9.1

前回 defined? の動作で理解できないことがある、と書いた。その際に使用した Ruby のバージョンは 1.8.7 だった。今回、バージョンを 1.9.1 にして試してみた。結果は 1.8.7 の場合と異なる結果になった。 CONST_HOGE = false p defined? CONST_HOGE && CON…

defined?

Ruby 1.8.7 でのこと。 CONST_HOGE = false p defined? CONST_HOGE && CONST_HOGE # => "expression" p defined?(CONST_HOGE) && CONST_HOGE # => false p defined? CONST_PIYO && CONST_PIYO # => nil p defined?(CONST_PIYO) && CONST_PIYO # => nil 下三…

小槌へ移行(コード)

先日書いた、家計簿の移行に使ったコード。