debian, ubuntu + Railsのapacheのインストール(passenger)

rvm ruby-1.8.7-head@global
gem install passenger
aptitude install apache2 apache2-prefork-dev libcurl4
~/.rvm/gems/ruby-1.8.7-head@global/gems/passenger-3.0.2/passenger-install-apache2-module

This installer will guide you through the entire installation process. It
shouldn't take more than 3 minutes in total.

Here's what you can expect from the installation process:

1. The Apache 2 module will be installed for you.
2. You'll learn how to configure Apache.
3. You'll learn how to deploy a Ruby on Rails application.

Don't worry if anything goes wrong. This installer will advise you on how to
solve any problems.

Press Enter to continue, or Ctrl-C to abort.

ここでは3と入力しEnter

RVM+Ruby1.9.2+NetBeans+FastDebuuger

rvm環境については省略。
どうやら、ruby-1.9.xには、ruby-debug、ruby-debug-base等は対応していないらしい。。。
ruby-1.9.xには、ruby-debug19, ruby-debug-base19を使用する。
NetBeansでも使用したいので、ruby-debug-ide19もインストール

rvm ruby-1.9.2-head@global
gem install ruby-debug19 --no-ri --no-rdoc

すると

Building native extensions. This could take a while...
ERROR: Error installing ruby-debug-base19:
ERROR: Failed to build gem native extension.

こんなかんじで怒られる。

gem install ruby-debug19 --no-ri --no-rdoc -- --with-ruby-include=/home/{username}/.rvm/src/ruby-1.9.2-head

でいいらしい。
そしてあとはNetBeansでよみこませる!

きた!きたのかおい!
そしてデバッグモードで起動!

Webサーバに接続できませんでした。

なん。。。だと?
.rvm/gems/ruby-1.9.2-head@global/gems/ruby-debug-ide19-0.4.12/lib/ruby-debug-ide.rbを
少し編集する必要があるらしい
line133らへんのif文の中に以下を追加

if Debugger::PROG_SCRIPT == 'script/rails'
 ps = `pwd`.chomp+'/script/rails'
else
 ps = Debugger::PROG_SCRIPT
end
bt = debug_load(ps, options.stop, options.load_mode)

できた!

Ubuntuでの RVM 環境のセットアップ

RubyとGemは入れない状態で始める

RVMをGitでインストール

$ mkdir -p ~/.rvm/src/ && cd ~/.rvm/src && rm -rf ./rvm/ && git clone --depth 1 git://github.com/wayneeseguin/rvm.git && cd rvm && ./install

.bashrcや.zshrcファイルに以下を追記

if -s /home/nishima/.rvm/scripts/rvm ; then
source /home/nishima/.rvm/scripts/rvm ;
fi

ファイルのコンパイルに必要なライブラリのインストール

$ sudo apt-get install gcc make autoconf build-essential

w-getのようなソフトのインストール

RailsをShift_JISでつくろうとしてみた

細かいことはめんどいので割愛
必要な作業
追記あり
config/enviroment.rb

$KCODE = "sjis"
...
Rails::Initializer.run do |config|
...
config.action_controller.default_charset = "Shift_JIS"
..
end

あと、HTMLのレイアウトとして使ってるもので、
metaタグのcharsetをShift_JISに。
これで基本的にはいいのだが、ソース内の文字コードが実はUTF8のままになってしまうので、
application_controller.rbで明示的に文字コード指定

$KCODE = "s"

以上!

追記

この書き方ではRuby1.8.xではapplication_controller.rbを通らない処理のときの文字コードがUTF8になってしまう。
なのでやはりアプリケーション全体で文字コードの指定が効く必要がある。

なので
http://d.hatena.ne.jp/Kazzz/20090327/p1
を参考に修正をする。

config/initializers/に_initialize_encording.rbというファイルを作成し、
以下の記述

$KCODE = "s"

たったこんだけで日本語がうまいこと使えるっぽい

Windows環境のNetBeansIDEでFastdebuggerがインストールできない

Windows 7環境で、Railsアプリを作成しようとしたときの話。
開発環境としてNetBeansIDEを使用。

適当にScaffoldで作成して

script/generate scaffold blogs title:string, content:text

すごいぜRails ヽ( ´ー)ノ

そしていざサーバ起動するときに、
デバッグで起動しようとしたら、

FastDebbugerがインストールされていません。

こんなかんじのメッセージが出たので、
指示に従ってダウンロードを開始したら、

ダウンロードに失敗しました。

おい。
指示にしたがっただろうが。

なんて思いながらいろいろしらべたところ、
"linecache"とやらが必要とのこと

linecache: http://rubyforge.org/frs/?group_id=5040&release_id=22842

ダウンロードしてgem install!!

gem install linecache-*.*-mswin32.gem
”*”はバージョンねー

無事インストールできたので、次はruby-debug-baseのインストール

ruby-debug-base: http://rubyforge.org/frs/?group_id=1900&release_id=28306

gem install ruby-debug-base-*.*.*-mswin32.gem
またもや "*" はバージョンね!

そして最後は、ruby-debug-ide
NetBeansIDEで使えなきゃ!

ruby-debug-ide
http://rubyforge.org/frs/?group_id=3085&release_id=38858

新しすぎると、コンパイルに失敗するみたいなので、
バージョン0.4.6くらい

gem install ruby-debug-ide-0.4.6.gem

できたル '‐'リ

Railsで日本語カラム名を扱う(微妙。。)

仕事でRailsから日本語カラムを使う調査を行った。

なんかプラグインとかでありそうだけどググってもひっかからない(泣)
なんとなくでつくってみた。

Sampleテーブルをつくって中身はこんな感じ
DBの文字コードはShift-JIS!

Sample↓

                                                                                                                          • +

| タイトル | サンプル | 本文 | created_at | updated_at |

                                                                                                                          • +

|     |     |   |      |      |

                                                                                                                          • +

ちなみに出力結果は文字化けしてます。

ちなみにこんな書き方はエラーでできない。

sample = Sample.new
sample.タイトル = "タイトルはこれ!"
=> NoMethodError: undefined method `タイトル' for #

いろいろ試した結果、Sampleに対して "タイトル" ではなく、
Shift-JISに変換された "\203^\203C\203g\203\213" という文字列で定義されている模様

実験

sample = Sample.new("\203^\203C\203g\203\213" => "タイトルだよー")
=>

                                                                                                              • +

|タイトル   |サンプル|本文|created_at |updated_at|

                                                                                                              • +

|タイトルだよー|    |  |      |      |

                                                                                                              • +

(・vv・)入った

sample."\203^\203C\203g\203\213"
=> SyntaxError: compile error
ごめんなさい。

sample.send("\203^\203C\203g\203\213")
=> "タイトルだよー"
できるんだ(’’;)

では代入はどうする?

sample.send("\203^\203C\203g\203\213") = "タイトル変更ですぞ"
=> SyntaxError: compile error
やっぱり

でも、
sample.attributes = {"\203^\203C\203g\203\213" => "タイトル変更ですぞ"}
=> "タイトル変更ですぞ"

ヽ( ´ー)ノ できるじゃないか

強引だけど代入もできることを確認できた!
あとは、処理を簡単に呼べるように定義!
sample.titleとかで呼び出せたり、代入してみよう。

やりたいこと例(app/models/sample.rb)

def title
self.send("\203^\203C\203g\203\213")
end
def title=(value)
self.attributes = {"\203^\203C\203g\203\213" => value}
end

こんなかんじで実現!
でも一つ一つ作るのは面倒なので
定義ファイルを作成

config/convert_column/sample.yml

title: タイトル
sample: サンプル
content: 本文

そしてymlをもとに "define_method" でメソッド定義して、完成したモデルがこれ↓

app/models/sample.rb

class Sample < ActiveRecord::Base
set_table_name "サンプル"

# 英語名 => 日本語カラム名の情報の取得
# 例:
# title: タイトル
# sample: サンプル
# content: 本文
COLUMNS = YAML::load_file(File.join(RAILS_ROOT, "config", "convert_column", "sample.yml"))

# 日本語カラムに対応する英語のaccessor定義
attr_accessor *COLUMNS.keys

validates_presence_of :title

# 日本語カラムへ代入するためのメソッド定義
COLUMNS.each do |key, value|
define_method("#{key}"){|v|self.send(value.tosjis)}
define_method("#{key}="){|v|self.attributes = {value.tosjis => v}}
end

end

びみょうなのは分かってる!!
所詮は備忘録!

でも意外とごちゃごちゃはしなかった