Hatena::ブログ(Diary)

いとうまさしのカチャカチャTODAY

2011-01-22

Rails3をはじめてすぐに勉強したことリスト

| 13:39

MacBook Air 11インチ欲しい!いとうまさしです。

----

プロジェクト作るときは

$ rails new プロジェクト名

コントローラー作るときは

$ rails g controller コントローラー名

モデル作るときは

$ rails g model モデル名 「フィールド名:型」の繰り返し

例えば

$ rails g model user name:string email:string birthday:date

みたいな。

サーバの起動は

$ rails server

コンソールの起動は

$ rails console

----

利用するgemはRAILS_ROOTのGemfileに書く。

gem 'haml-rails'

といった具合。

Gemfileにgemを追加したらRAILS_ROOTから

bundle install

を実行(bundleだけでもオッケー)するとgemインストールしてくれる。

依存関係も考えていろいろ入れてくれる。

----

Rackっていうのは

Railsフレームワークに依存せず、直接Webサーバーとやり取りして、何か機能を実現してくれるミドルウェア」←僕なりの理解であって、正式には違うかも。

例えばOmniAuthというRackgemRails側に何も書かなくても

/auth/twitter

のリクエストを勝手に受け取って、勝手にTwitterと認証のための通信をしてくれる。

RailsプログラマーはOmniAuthから

/auth/twitter/callback

に飛ばされてきたリクエストの面倒を見るだけ、みたいな。

----

ユーザー認証はrestful_authenticationじゃなくてDeviseが良いっぽい。

ファイル添付はfile_columnじゃなくてPaperclipが良いっぽい。

2011-01-18

Mac+RVM+Ruby1.9.2+Rails3の環境作り

| 23:46

RVM(Ruby Version Manager)のインストール

$ bash < <( curl http://rvm.beginrescueend.com/releases/rvm-install-head )

.bash_profileの末尾に以下を追記

[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm"  # This loads RVM into a shell session.                                                        

.bash_profileの変更を反映

$ source .bash_profile

RVMでインストールできる環境を一覧表示

$ rvm list known
# MRI Rubies
[ruby-]1.8.6[-p399]
...
# JRuby
jruby-1.2.0
...
# Ruby Enterprise Edition
ree-1.8.6
...

ruby 1.9.2をインストールしてみる

$ rvm install ruby-1.9.2-rc2

インストールしたrubyを使いますよ、と。

$ rvm use ruby-1.9.2-rc2
$ ruby -v
ruby 1.9.2dev (2010-07-11 revision 28618) [i386-darwin9.8.0]

もともと入ってたバージョンに切り替えますよ、と。

$ rvm reset
$ ruby -v
ruby 1.8.7 (2009-06-12 patchlevel 174) [i686-darwin9]

rubyが利用するgem環境も複数作る(rails2, rails3用で分ける)

$ rvm use ruby-1.9.2-rc2
$ rvm gemset create rails2
$ rvm gemset create rails3
$ rvm gemset use rails3

今作ったrails3環境にrails3をインストール

$ gem install rails3b
$ gem install rails --version=3.0.1

とりあえず以上です。

2010-10-20

WordPressでドメインの引越しをするときのSQL

| 23:57

WordPressで運営中のブログリニューアルしようと思ってる。

そこでリニューアルの作業をするために現状のサイトをコピーして、テストサイトを作りたい。

とりあえず以下の手順でテストサイトができた。

・テスト用のサブドメイン作成

・本番サイトのWordPressフォルダをコピーしてテストサイト用のフォルダ作成

・現状のデータベースをダンプ

・新しいデータベースを作って、そこにリストア

・テストサイト用のVirtualHostの設定をApacheに追加&再起動

・以下のSQLを実行

update wp_options set option_value = 'テストサイトのURL' where option_name = 'home';

update wp_options set option_value = 'テストサイトのURL' where option_name = 'siteurl';

update wp_posts set guid = REPLACE(guid, '本番サイトのURL', 'テストサイトのURL');

ま、そんな感じ。

2010-08-24

bit.lyで短縮URLを作る手順

08:26

f:id:itmsc:20100824082312p:image



f:id:itmsc:20100824082507p:image



  • 「Shorten with bit.ly」と書かれたフォームにURLをペーストします。
  • 「Shorten」ボタンを押します。

f:id:itmsc:20100824082506p:image



  • 「Your link →」というエリアが現れます。その横に短縮URLが表示されます。

f:id:itmsc:20100824082505p:image



  • Twitterで短縮URLを使ってツイートします。
  • ページの中段まで下がると、短縮URLをクリックしてくれた人の人数が表示されています。

f:id:itmsc:20100824082857p:image

2010-05-07

background_fuで「あとでやる」処理を書く

| 14:30

railsを使って「あとでやる」処理を実現する方法について

rubyMLに回答をしてみたので、内容をここにも書いておきます。

質問メールは以下の通り。

RubyRailsも初心者なのですが、
現在、Railsで簡単なtwitterbotを作成しています。
Railsで作った設定画面から、投稿間隔の設定を
行い、後で変更できるようにもしたいのですが、
良いやり方がいまいち思いつかず、
困っています。

今のところ、考えているものは以下です。
1、cronで実行
2、backgroundrbで実行
3、タイマーでループ回して処理
  (投稿間隔はDBから取得)

投稿間隔の設定ができるボット作成サイトなどは、
結構あるみたいなので、なんらかの方法でできると
思うのですが、恥ずかしながら、やり方がわからず、
質問させていただきました。できれば簡単な方法
でやりたいと思っています。

僕の回答は以下。

> > 2、backgroundrbで実行
> > 3、タイマーでループ回して処理

background_fu を使って投稿の間隔を設定する方法を大雑把に紹介します。
(タイマーうんぬんはbackground_fuの仕組みがケアしてくれます。)

background_fu は以下な感じでデーモンとして起動させておきます。

ruby script/daemons start

デーモンはjobsテーブルを5秒間隔(設定で変更可能)で
selectします。

処理してよいJobがあれば実行します。
(処理してよい => 未処理 && 開始時刻過ぎてる)

実行する処理はlib/worker以下にクラスを作っておきます。

JobにはWorkerのクラス名、メソッド名、引数、実行開始時刻
を入れておきます。

Job.create!
:worker_class => 実行するWorkerのクラス名,
:worker_method => 実行するWorkerのメソッド名,
:args => メソッドの引数,
:start_at => 実行開始時刻

みたいな感じ。