Skip to content


約1年放置だと。。。

ドメインまで取ったブログを1年放置してるふぁんたっちです←

ひどいなーw

毎年毎年まぁ懲りずに三日坊主だな。。このやろう。。←

今年はもうちょっと書きますよ!あぁ!書いてやるとも!!

100PV/month ぐらいになるよう頑張ります。。。

…orz

Posted in Diary.


PHPで private メソッドのテストとか。。。

どうやんの?

ってテスト書いてて思ったんだが、
ググってもめんどくさそうなのがいっぱいだし。。

「簡単に呼べる関数ないかなー」とか思って
探してたけど見つからん。。。

いい意味でも悪い意味でも、
何でもありそうなPHPなのに。。。

というわけで testInstanceMethod() っていうのを作ったw

テストしたいクラス内にコピペすりゃ使える。。はず←

(例 Sample.php

 
Class Sample
{
    /**
     * privateMethod
     *
     * @access private
     * @return void
     */
    private function privateMethod(){

        $args = func_get_args();

        foreach($args as $arg){
            var_dump($arg);
        }
    }

    // こんな感じでクラスに設置してー
    /**
     * testInstanceMethod
     *
     * @param string $function_name
     * @param array $args_array
     * @access public
     */
    public function testInstanceMethod($function_name, $args_array){

        $args_name_array = array();

        foreach ($args_array as $num => $value) {

            $arg_name = "\$arg{$num}";
            eval($arg_name . " = \$value;");

            $args_name_array[] = $arg_name;
        }

        $args_string = implode(', ', $args_name_array);

        eval("\$result = \$this->{$function_name}({$args_string});");

        return $result;
    }
}
 
 
// 実行してみる。
$arg1 = "value";
$arg2 = array("array_value1", "array_value2");
$args = array($arg1, $arg2);

$obj = new Sample();

$obj->testInstanceMethod("privateMethod", $args);

$obj->privateMethod($arg1, $arg2);

↓実行結果

> php Sample.php
string(5) "value"
array(2) {
  [0]=>
  string(12) "array_value1"
  [1]=>
  string(12) "array_value2"
}
PHP Fatal error:  Call to private method Sample::privateMethod() ...(ry

まぁ最後は private メソッドを直接呼んでるので当然のようにエラーです。

あんまりしっかりチェックしてないので、
動かない場合もありそうだが、とりあえず晒しときます。

では ノシ

Posted in Development.

Tagged with .


zenback 導入!

ツイッター見てたら気になるものが。。。

zenbackであなたのブログに全てのフィードバックを。

って訳で早速導入。

たぶんエントリーの下に出てるかと。。。

出てない人は個別ページへどぞっ -> http://fantatchi.info/archives/226

Posted in Information.

Tagged with , .


Rails3 でツイッターサービスを作る!。。とか言ってみるw

Rails2 もまともに使ったことない fantatchi です←

今日のエントリーはほぼここ「1時間でツイッターサービスを作ろう! | KRAY Inc」通り。これを Rails3 でやったってだけです。はい←
※ 関係ないこともたまに入ってますがね ( ̄ー+ ̄)ニヤリ…。

ん?なぜ Rails3 かって?。。。

なんかイケメソな感じだからです←
。。。ほっといて下さい。バカなんですw
 
 
では本題に。。。
今回の開発環境は以下のような感じです。

MacOSX 10.6
Ruby-1.9.2 ← rvm 絶賛使用中!
MySQL5.1.45 ← もともとボクの環境に入ってただけですw
Rails3
 - 他主要 gem
 bundler
 twitter-auth (https://github.com/nijitaro/twitter-auth)

※ ちなみに後で紹介する Heroku は内部的に Postgres らしい。。ただ MySQL でビルドしても動きます。
詳しく調べたい方はこの辺↓から探して下さい。
http://docs.heroku.com/database#frequently-asked-questions
 
こんなもんか?では、いつもの如くやったことをだーらだらと。
 
 
■ Ruby-1.9.2 を使うので rvm でインストール。
※ rvm って何?って方は → http://gihyo.jp/dev/serial/01/ruby/0039

rvm install ruby-1.9.2

※ 細かいバージョンが気になる方は…
rvm list known
で使用できるバージョンの一覧が出るのでよろしこ。
 
■ rails3 用 gemset 作成 & 切り替え

rvm --create use ruby-1.9.2@rails3

まぁこれは人それぞれなので好みで。
 
■ bundler インストール

gem install bundler

※ bundlerってなによ!?な方は、この辺か(http://www.oiax.jp/rails/rails3/bundler.html)、公式か(http://gembundler.com/)
 
■ プロジェクトディレクトリの作成 & bundle init

mkdir rails3twiservice
cd rails3twiservice
bundle init

 
Gemfile が作成されるので以下を記述

gem "rails", ">=3.0.0"

 
■ Rails3 いんすとぉぉぉぉる

bundle install --path vendor/bundle

 
さてやっと本題w
■ Rails3 プロジェクト作成

bundle exec rails new . -J -T -d mysql

※ Gemfile がコンフリクトしてるぞ!上書きしちゃうぞボケ!。。的なことを聞かれるから上書き
 
オプションはこんな感じ。
-J, [--skip-prototype] # 後でJQuery に置き換えるので
-T, [--skip-test-unit] # rspec を使用するので
-d mysql # データベースにMySQLを指定
 
まぁ別に JQuery も rspec も今回は使わないけどねw 今後の為に!ってことでw
 
■ gem 追加
以下とかを Gemfile に追加

gem "rails3-generators"
gem 'jquery-rails'
gem 'rspec-rails', '>= 2.0.0'
gem 'factory_girl'

 
factory_girl も使わないけどねw
ただ、仕事で fixture くんに結構悩まされたので、勉強の為にも導入 (´∇`)
 
■ 追加 gem 更新

bundle install

 
■ JQuery、rspec インストール

./script/rails g rspec:install
./script/rails g jquery:install

 
■ rspec、factory_girl 設定
config/application.rb に以下の設定を追加。

    config.generators do |g|
      g.test_framework :rspec, :fixture => true, :views => false
      g.fixture_replacement :factory_girl, :dir => "spec/factories"
    end

 
■ database 作成
config/database.yml を環境に合わせて設定したら。。

bundle exec rake db:create

 
■ 試しに controller とか model とか作ってみる。

./script/rails g controller samples
./script/rails g model sample

※ spec ファイルとか、factory_girl のファイルとか作られるか確認。

いらないので削除。

./script/rails destroy controller samples
./script/rails destroy model sample

 
■ git init

git init

 
 
※ ここからは KARY さんのエントリーと合わせて読むと幸せになります。
。。ってか合わせて読まないとわからないと思いますw
タイトルも合わせますので適宜参考にしてください。
 
■ Heroku に登録
Heroku 周りはめんどくさいので KARY さんのエントリーか、
KARYさんも薦めている↓辺りを参考にして下さい。
http://kuranuki.sonicgarden.jp/2009/05/rubypaasherokurails.html
 
■ Heroku プロジェクト登録

heroku create rails3twiservice

 
■ ツイッターアプリ登録
この辺もKARYエントリーを参考にして下さい。 (〃・ω・)ゞえへへ←
 
■ 開発
- public/index.htmlを削除する
まぁ読んで字の如くw
 
- ツイッター認証
ここの twitter-auth のインストールだけちょっと違います。
以下を Gemfile に追加して、bundle install します。

gem 'twitter-auth', :require => 'twitter_auth/engine', :git => 'git://github.com/rokudenashi/twitter-auth.git', :branch => 'rails_3'

 
そして generate + table 作成

./script/rails g twitter_auth
bundle exec rake db:migrate

 
後は一緒♪
 
■ 偉大なるHelloWorldボタンの実装
この辺も微妙にコマンドが違うので確認してね♪
 
- controller、view 作成

./script/rails g controller messages index

 
- ルーティング設定
※ Rails3 でルーティング設定方法が変わってるので注意!
config/routes.rb

#get "messages/index" <- コメントアウト

# 以下を追加
resources :messages, :only => [:index, :create]
root :to => 'messages#index'

 
- ルーティング確認

bundle exec rake routes

 
- controller 実装
KARYさんコード + 以下をファイルの先頭に加えて下さい。
じゃないと化けるお。。

#-*- coding: utf-8 -*-

 
後は一緒でおk
 
■ 公開
- gemsファイルの用意
これはいらないです。bundler で管理してるので (´∇`)
 
- デプロイ前に Heroku の ruby を 1.9.2 に
使用中のバージョン確認

> heroku stack
  aspen-mri-1.8.6
* bamboo-ree-1.8.7
  bamboo-mri-1.9.1 (beta)
  bamboo-mri-1.9.2 (beta)

 
- バージョン変更

heroku stack:migrate bamboo-mri-1.9.2

 
後は一緒 \(^o^)/おしまい \(^o^)/
 
 
ちなみに作ったやつはここにあります。たぶん消しますがw
http://rails3twiservice.heroku.com/
 
動いたので大丈夫だと思いますが間違ってたらごめんなさい!←
では ノシ

Posted in Development.

Tagged with , , .


FreeBSD… vim の BackSpace が…

仕事でFreeBSDを使うことになりました。。

今までLinux(ほぼCentOS)しか使ったことないけど、
ほぼ一緒だろ?っとか思ってたら。。。

vim での BackSpaceキーの挙動がおかしい。。
前の文字消せない。。
ボク x で消すとか慣れてない←
ビジュアルモードとか使いこなせない←

まぁホントは 慣れろよ! って話なのですが、
どうにもこうにもイライラするので、設定を探す。。。

で、ここ↓でこっそり設定見つけた。
vimrc + screenrc晒し – Cocelo Style

以下を .vimrc に設定すれば FreeBSD でも、BackSpaceキー使えるよ \(^o^)/
※ Mac だと deleteキー ね♪

" backspaceキーの挙動を設定する
" indent        : 行頭の空白の削除を許す
" eol           : 改行の削除を許す
" start         : 挿入モードの開始位置での削除を許す
set backspace=indent,eol,start

よかった♪

Posted in Development.

Tagged with , .