Hatena::ブログ(Diary)

マグネシウムライト

dev.kakkunpakkun.meへ移行しました。

2011-07-11

SinatraのmodularスタイルでAuthlogicを使うときに起こりがちなエラー

authlogicをsinatraのmodularスタイルで使おうとするとsinatra_adapter.rbでこんな感じのエラーが出ることがある。

authlogic-3.0.3/lib/authlogic/controller_adapters/sinatra_adapter.rb:50:in `included': undefined method `before' for Sinatra::Request:Class (NoMethodError)

これは'sinatra'ではなく'sinatra/base'のみrequireした場合に起こる。

たぶんsinatraがmodularスタイルに対応する前に作成されたんじゃないかと思う。

なのでsinatra_adapter.rbを以下のようにSinatra::Baseを使うように変更。

# Sinatra::Request.send(:include, Authlogic::ControllerAdapters::SinatraAdapter::Adapter::Implementation)
Sinatra::Base.send(:include, Authlogic::ControllerAdapters::SinatraAdapter::Adapter::Implementation)

これでどっちでも動くはず。あまりまだ動作をチェックしてない。とりあえずエラーはない。

動かしたバージョンは以下のとおり

sinatra
1.2.6
authlogic
3.0.3

問題はここで報告されててだいぶ経ってるんだけど治ってない。Sinatraで使う人が少ない上にmodularスタイルじゃないと起こらないからかな。。

no title

2011-07-07

Sinatraでユーザー認証にAuthlogicを使う

Sinatra使ってみたいなと思って、Sinatra+Slim+ActiveRecordをやってます。

認証は自分で作るのも多いみたいだけど既存のライブラリを使ってみることに。

AuthlogicDeviseよりシンプルな感じで良さそう。

no title


基本これそのままactionやhelperなどを持ってきて、migration動かしてviewsのhamlをslim化したら動いた。

no title


例えばlogin.hamlはこんな感じに変更。

## login.slim
p Login

form method="post"
  div
    p
      | email:
      input type='text' size='20' name='user[email]'
  div
    p
      | password:
      input type='text' size='20' name='user[password]'
  div
    p
      | Remember me:
      input type='checkbox' value='1' name='user[remember_me]'
  input type='submit' value='Login'

ユーザー認証はAuthlogicだけど、権限による認可は全然提供していないので自分でなんとかしていいかも。

no title

こんなライブラリもあって面白そうだけど。


slimは見た目簡潔なんだけど

input type='text' size='20' name='user[email]'

より

input :type => 'text', size => '20',  :name => 'user[email]'

とか書けた方がRubyっぽくていいなーと思った。

でも、そうなるとHamlに戻ってしまう悲しさ。

2011-02-06

Ubuntuで日本語ロケール設定

ServersMan@VPSを使ってるんだけど、Ubuntuを入れたらsshで入っても全然日本語で入力が出来なかった。

ロケール設定ってやつですね。

他の環境でもたまに「あれ?このサーバ日本語入らない」ってなるので設定方法を。

もう完全にこちらの方法です

HugeDomains.com - De-Lab.com is for sale (De- Lab)

# apt-get install language-pack-ja
# dpkg-reconfigure locales
# update-locale LANG=ja_JP.UTF-8

これで次回ログインから日本語が打てるようになった。

なんだかんだで日本語打ちたいことがあるので助かりました。

2010-09-21

Macで環境を整えるための環境-homebrewとrvmとrubygems-

no titleこちらへ移行しました。

情報の修正などは移行先の方でやりますのでご注意ください。


環境整備ってなんだか楽しい気分になってしまうものですね。

ちまちまとportで使いもしない言語やサーバを入れたりrubyのいろんなバージョンを入れたり。

でも、プログラム書いたりしたいのにいつまでもそんなことやっててもしょうがないので当面環境を整えるための環境を固めて、後顧の憂いをなくして先へ進めるように書き記しておく。


ミドルウェアやRuby以外の言語を整えるための管理システムhomebrew

no title

portより気軽で分かりやすいからこっちにしました。

brew install git

こんな感じでgemコマンドっぽいのもいい。

CellarやKegといった管理方法も分かりやすかった。

homebrewをインストール
ruby -e "$(curl -fsS http://gist.github.com/raw/323731/install_homebrew.rb)"
設定

homebrewが入るとなにかと/usr/binより/usr/local/binを優先したいので、~/.bash_profileの先頭にこんなのを書き加えておきました。

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

RubyとRubygemsを管理するためのrvm

All about Ruby on Rails & Data recovery software

Rubyもhomebrewでやろうかと思ったけど、1.8.6系、1.8.7や1.9.2、はてはMacRubyも使いたいのでそこらへんの切り替えが簡単なrvmを使うようにした。

これで各Rubyでインストールしたgemも別に管理出来るしいいんじゃないかと思った。

インストールはまんまドキュメントの通りhttp://rvm.beginrescueend.com/rvm/install/:title?

rvmをインストール
bash < <( curl http://rvm.beginrescueend.com/releases/rvm-install-head )
設定

bash_profileの末尾にこれを追記

[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm"
確認
source ~/.bash_profile
type rvm | head -n1
=> rvm is a function #これが出たらOK
Rubyをインストール

ここを参考にインストール

All about Ruby on Rails & Data recovery software

とりあえず1.9.2を入れる。Rails3.0も出たし。

rvm install 1.9.2
rvm use 1.9.2 # やらなくてもいいはずだけど
確認

とりあえずrubyもgemも同じバージョンのものを使っているか。/usr/binのrubyやgemを使ってないか。

which ruby
=> /Users/kakkunpakkun/.rvm/rubies/ruby-1.9.2-p0/bin/ruby
which gem
=> /Users/kakkunpakkun/.rvm/rubies/ruby-1.9.2-p0/bin/gem

(ユーザーが僕の場合こんな風)

Railsなどrubygemsで入れられるものはrubygemsで

Railsをインストール
gem install rails # suやsudoではない
確認
which rake
=> /Users/kakkunpakkun/.rvm/gems/ruby-1.9.2-p0/bin/rake
which ruby rails
=> /Users/kakkunpakkun/.rvm/gems/ruby-1.9.2-p0/bin/rails

同じrubyで同じgemだと確認。

あとはhpricotだろうとnokogiriだろうとgemでインストールしちゃいます。


うまくいかないとき

/usr/binのrubyやgemが邪魔なときは名前を変更して追いやっちゃいました。

mv /usr/bin/ruby /usr/bin/ruby_old

2010-08-22

hotcocoa入れたり

$ hotcocoa TestProj

って打ったらコマンドがなかった。

macgemなんて知らなかったんだ。

# macgem install hotcocoa
$ hotcocoa TestProj
$ cd TestProj
$ macrake

これでとりあえずウィンドウが出てくるとか面白い。XCode通してないぞ!

macgemは初めて見たけど普段のrailsものとかは普通のgemコマンド使ったほうがいいかなと思ったりした。