2012年2月21日火曜日

Mechanize再入門

久しぶりに Mechanize を触ったのでメモ

プログラムからウェブサイトをブラウズするためのライブラリ。

以下を読めばだいたい分りそう。
mechanize-2.2 Documentation
Nokogiri

Ruby勉強会で話させて頂いてときのスライドで雰囲気は伝わるかと。
(APIが古すぎてコードとかはもう動きません)
http://www.slideshare.net/Sixeight/its-mechanize-for-it-ruby-as-a-finder

インストール


$ gem install mechanize



source 'http://rubygems.org/'

gem 'mechanize'

を Gemfile に書いて bundle install しましょう。


Google で検索する例


require 'mechanize'

agent = Mechanize.new
page = agent.get('http://google.com/')

form = page.form
form.q = 'にゃんこ'
page = agent.submit(form)
# MEMO: ブロックでも書ける
# page = page.form {|f| f.q = 'にゃんこ' }.submit

page.search('h3.r a') #=> 検索結果
page.links #=> クリック出来るリンク一覧

page.links.first.click # とかでクリック出来る

Mechanize の API はどうにもスマートに書けなくて、いまいちイケてない気がします。
恐らくもっと綺麗に書けるんだろうけれど、それが直ぐに分からないのがイケてない。

2011年8月23日火曜日

pry を Rails の console として使う (for 2.3)

便利な pry (https://github.com/pry/pry) を Rails 2.3 でも使いたい!


以下の方法だと 2.3 系統の ./script/console しても意味が無い。
http://d.hatena.ne.jp/yoppiblog/20110820#1313836583


以下のようにする。


$ ./script/console --irb=pry


Bundler を使っている場合は Gemfile に gem 'pry' を書いておくといける。

2011年5月8日日曜日

Vim 勉強会 #7 (#8 という噂も) に参加しました

告知ページ:http://cotocoto.jp/event/45808
Ust録画:http://www.ustream.tv/channel/uji

久しぶりの Vim 勉強会。朝までスライド作ってて寝坊しました。

おすすめVimプラギンをいくつか紹介」 by ujihisa


寝坊して見逃しました。あとで、Ust 録画観ます。

「lingr.vimとその中身」 by tsukkee



途中から参加。

Vim から Lingr のチャットに参加出来る便利 plugin の開発秘話。

  • Vim は非同期が弱い => Python インタフェースを使用
  • Python インタフェースを使うと副次的にい便利 API 使える
  • Python インタフェースもバグある不便
  • Vim にも非同期を!
  • キモ便利な Python インタフェースのラッパみたいなの作ってます

あたりがポイント。Lingr に参加して情報たくさん集めないと…!。

「Vundleでゔんどる」 by kozo-ni



話題の plugin 管理システム Vundle の紹介

インストールから導入まで一連の流れと、gmarik さんの .vimrc の解説など。

Vundel は完璧に life changing な plugin 管理システムなので、他にこだわりの無い人は今この瞬間、続きとか読んでないで導入すべきです。
導入などは手前味噌ですが Vim Hacks の Hacks#215 を参照してください。

「僕がいかにして unite を使わなくなったのか」 by Sixeight


unite.vim の紹介と、おすすめ unite plugin の紹介をしたあとに、rails.vim の紹介をだらだらとやりました。

MacVim で適当に良い感じでページ送りして、スライドっぽくしてたのですが、unite-font のデモをしたときに、フォントサイズがずれてしまって、残念なことになりました。

紹介した unite plugin



他の plugin はこちらにまとまっています。 unite plugins

「気鋭の新機構vitalの全て」 by ujihisa



最後は ujihisa さんによる vital の紹介。初代 MacBook Air の VGA ケーブルを忘れられたため、ホワイトボードでも解説。

plugin をいくつか作った人ならば絶対に欲くなる共通関数などを集めた、フレームワーク? 的なものだそうです。
autoload の仕組みの問題点の指摘と、それを解決するためにどのように vital を使うのかという話をされました。

vital 普通に便利そうなので、plugin を作る機会が発生したら、是非使いたい。


まとめ


久しぶりの vim 勉強会でしたが、今回は内容が濃く、参加者も多かったので、とても言い刺激を受けることが出来ました。
やはり、問題点をみつけて、それを自分で解決していくという姿勢が重要なんだなと改めて痛感して、消費者になりさがってしまっていた自分を鼓舞することが出来ました。

次回は恐らく #9 ではないかと思います!

2011年4月23日土曜日

Rails 2.3 系を pow で走らせる

大人気の pow で、Rails 2.3 系を走らせるメモ


Ruby のバージョン指定


そのままだと Max OSX に収録さている Ruby 1.8.7 が使用されてしまうため、
RAILS_ROOT に .rvmrc を作成し、使用するバージョンを指定する必要があります。
なお、当然ですが RVM を使用していることが前提です。

.rvmrc
rvm 1.9.2

.config.ru を用意する


pow は Rails を Rack アプリとしてマウントするため、config.ru が必要です。
Pow and Rails 2.3.x apps を参考にして、RAILS_ROOT に以下の内容で作成します。

.config.ru
require "config/environment"

use Rails::Rack::LogTailer
use Rails::Rack::Static
run ActionController::Dispatcher.new

シンボリックリンクを張る


あとは通常の手順と同じように ~/.pow にシンボリックリンクを作成します。

$ cd ~/.pow
$ ln -s /path/to/rails/app testapp

ブラウザでアクセス


http://testapp.dev にアクセスすると、Rails が起動します。
development モードで起動するため修正は即時に反映されます。

config/ 以下を書き換えたり、新しい Gem を追加した場合などは再起動が必要です。
Passenger などと同じで touch RAILS_ROOT/tmp/restart.txt で再起動します。

2011年1月10日月曜日

Rails の console でも SQL 表示したい

各所で書かれていることですが自分メモ

ActiveRecord::Base.logger = Logger.new(STDOUT)

Rails3 でモデルから名前付きルートを取りたい時

モデルの中でも名前付きルートを取り出したり、url_for したいよっていうことがあったので調べたら、以下の方法でいけるようです。

Rails.application.routes.url_helpers.root_path

簡単!便利!

最近買ったドメイン

あけました。もうおめでたくもなんでもないですね。

http://www.hacobun.co
http://ofni.nfofn.info

に適当なものを置きました。

どちらも同じ Sakura の VPS に向けてます。