アフィリエイト広告を利用しています

広告

この広告は30日以上更新がないブログに表示されております。
新規記事の投稿を行うことで、非表示にすることが可能です。
posted by fanblog
asahina-ryusei.net

rails3 passenger httpd crush

rails3 で passenger を使っていたのだが何となく OS を verison up しようと思い、いろいろ update していた。
そして、rails を触ろうとした時に以下の様なエラーが出て apache がうまく機能しない。
Oct 14 12:48:53 host com.apple.ReportCrash.Root[1240]: 2010-10-14 12:48:53.708 ReportCrash[1240:290b] Saved crash report for httpd[1271] version ??? (
???) to /Library/Logs/DiagnosticReports/httpd_2010-10-14-124853_localhost.crash
Oct 14 12:48:54 host com.apple.ReportCrash.Root[1240]: 2010-10-14 12:48:54.446 ReportCrash[1240:307f] Saved crash report for httpd[1273] version ??? (
???) to /Library/Logs/DiagnosticReports/httpd_2010-10-14-124854_localhost.crash
Oct 14 12:48:55 host com.apple.ReportCrash.Root[1240]: 2010-10-14 12:48:55.444 ReportCrash[1240:390b] Saved crash report for httpd[1274] version ??? (
???) to /Library/Logs/DiagnosticReports/httpd_2010-10-14-124855_localhost.crash
Oct 14 12:48:59 host com.apple.ReportCrash.Root[1240]: 2010-10-14 12:48:59.014 ReportCrash[1240:2ac7] Saved crash report for httpd[1275] version ??? (
???) to /Library/Logs/DiagnosticReports/httpd_2010-10-14-124859_localhost.crash
Oct 14 12:48:59 host com.apple.ReportCrash.Root[1240]: 2010-10-14 12:48:59.442 ReportCrash[1240:14cf] Saved crash report for httpd[1276] version ??? (
???) to /Library/Logs/DiagnosticReports/httpd_2010-10-14-124859-1_localhost.crash
Oct 14 12:49:00 host com.apple.ReportCrash.Root[1240]: 2010-10-14 12:49:00.436 ReportCrash[1240:2973] Saved crash report for httpd[1277] version ??? (
???) to /Library/Logs/DiagnosticReports/httpd_2010-10-14-124900_localhost.crash


なんか面倒くさそうだなと思いつつ、httpd.conf をいろいろ削って切り分ける。passenger の為の設定を削ったところでエラーが止まった。OS 絡みだったからまたインストールしなおしてみるか。ということで passenger uninstall して install した。
そしたらうまくいきました。

さくらの VPS 月額980円

VPSとは?

Virtual Private Server のことでレンタルサーバです。
物理サーバを論理的(仮想的)に分割し、それぞれを
一台の物理サーバの様に使うことが可能です。
もちろん自分の箱になりますので root になれますし
再起動もでき、好きなOSを動かせます。

そして、さくらのVPS が素晴らしい。

月額980円で自由に使えるサーバが手に入ります。
使える OS は、CentOS, Ubunto, Debian, Fedora, FreeBSD 等です。

自宅にインターネット回線を引いて固定IPオプション料金を払うくらいだったら
このサービス買った方がお得かもしれませんね。

スタックスネット 原発のシステムを狙ったサイバー攻撃

原発のシステムを狙ったサイバー攻撃があるらしい。これは、怖いですね。
イラン国営通信は26日、同国の産業関連のコンピューター約3万台が「スタックスネット」と呼ばれるコンピューターウイルスに感染したと伝えた。8月に稼働体制を整えた同国初の原子力発電所「ブシェール原発」でも職員の個人用コンピューター数台が感染したものの、同原発の責任者は「主要システムに被害は出ていない」と述べた。

 同ウイルスは、工場や発電所の工程制御システムを標的としたもので、イラン政府当局は「西側諸国による攻撃」との見方を示した。タギプール通信情報技術相は「いまのところ深刻な被害は出ていない」とし、専門チームが駆除に当たっていることを明らかにした。

 米セキュリティーソフト大手によると、同ウイルスは米国やインド、インドネシアなどでも確認されているが、感染被害の6割はイラン国内に集中しているという。コンピューターセキュリティーの専門家の間では、ブシェール原発のシステムを狙ったサイバー攻撃との見方も出ている。

Rails3 Ajax では、link_to_remote じゃありません。

rails3 で Ajax をやってみた。
さっそくだめなかんじ。
link_to_remote を使うと以下のようなエラーが出る。
undefined method `link_to_remote' for #<#:0x1600d0>

え、無いの?ということで調べてみると...
どうやら "link_to_remote" がなくなり "link_to" , "button_to" などに ":remote = true" オプションで実装するらしい。
:remote => true - This will allow the unobtrusive JavaScript driver to make an Ajax request to the URL in question instead of following the link.
The drivers each provide mechanisms for listening for the completion of the Ajax request and performing JavaScript operations once they’re complete


ということで、やってみた。

適当に project を作成して以下が app/views/layouts/application.html.erb にあることを確認。
<%= javascript_include_tag :defaults %>

rails3 では、 project 作成時 に default で作成されてるので必ずあるはず。

次に、index に以下を実装。

% vi app/views/students/index.html.erb

<%= button_to "click", { :action => :ajax }, :remote => true %>
<div id='aaa'>Ajax....</div>


これで Ajax リクエストの準備が整う。

次に、受け取り側。

index.html.erb と同じ場所に ajax.js.erb を作成し以下を書く。
$("aaa").update (
"<font color="red">OK!!!!!</font>"
);


routing とかで起こられない様に config/routes.rb も編集。(xxxxxxsは、コントローラ名に置き換え)
match 'xxxxxxs/ajax' => 'xxxxxxs#ajax


サーバを起動してブラウザでアクセスし "click" ボタンを押すと 「Ajax....」が赤文字の 「OK!!!!!」に切り替わる。

こんなに簡単なことなのにいろいろ脱線もあり時間がかかってしまいました。。

Rails3 passenger install

rails2 から rails3 に環境構築してる際に passenger でつまずいたのでメモ。

rails3 で作成したアプリを本番環境で動かそうとした所、以下のエラーが出た。
/Library/Ruby/Site/1.8/rubygems/custom_require.rb 31 in `gem_original_require'
1 /Library/Ruby/Site/1.8/rubygems/custom_require.rb 31 in `require'
2 /Library/Ruby/Gems/1.8/gems/passenger-2.2.15/lib/phusion_passenger/utils.rb 221 in `setup_bundler_support'
3 /Library/Ruby/Gems/1.8/gems/passenger-2.2.15/lib/phusion_passenger/rack/application_spawner.rb 105 in `run'
4 /Library/Ruby/Gems/1.8/gems/passenger-2.2.15/lib/phusion_passenger/utils.rb 323 in `report_app_init_status'
5 /Library/Ruby/Gems/1.8/gems/passenger-2.2.15/lib/phusion_passenger/rack/application_spawner.rb 87 in `run'
6 /Library/Ruby/Gems/1.8/gems/passenger-2.2.15/lib/phusion_passenger/rack/application_spawner.rb 65 in `spawn_application'
7 /Library/Ruby/Gems/1.8/gems/passenger-2.2.15/lib/phusion_passenger/utils.rb 252 in `safe_fork'
8 /Library/Ruby/Gems/1.8/gems/passenger-2.2.15/lib/phusion_passenger/rack/application_spawner.rb 58 in `spawn_application'
9 /Library/Ruby/Gems/1.8/gems/passenger-2.2.15/lib/phusion_passenger/rack/application_spawner.rb 41 in `spawn_application'
10 /Library/Ruby/Gems/1.8/gems/passenger-2.2.15/lib/phusion_passenger/spawn_manager.rb 150 in `spawn_application'
11 /Library/Ruby/Gems/1.8/gems/passenger-2.2.15/lib/phusion_passenger/spawn_manager.rb 278 in `handle_spawn_application'
12 /Library/Ruby/Gems/1.8/gems/passenger-2.2.15/lib/phusion_passenger/abstract_server.rb 352 in `__send__'
13 /Library/Ruby/Gems/1.8/gems/passenger-2.2.15/lib/phusion_passenger/abstract_server.rb 352 in `main_loop'
14 /Library/Ruby/Gems/1.8/gems/passenger-2.2.15/lib/phusion_passenger/abstract_server.rb 196 in `start_synchronously'
15 /Library/Ruby/Gems/1.8/gems/passenger-2.2.15/bin/passenger-spawn-server 61


むむむ、gems がまだ 1.8 の環境で動いている?
ruby を 1.9系 にして rails も 3系 にして gem も ruby1.9系 で作り直しているのになぁと考えていたら passneger のケアをしていないことに気がついた。

httpd.conf を見てみると 1.8系のままである。
LoadModule passenger_module /Library/Ruby/Gems/1.8/gems/passenger-2.2.10/ext/apache2/mod_passenger.so
PassengerRoot /Library/Ruby/Gems/1.8/gems/passenger-2.2.10
PassengerRuby /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby

ということで、改めて gem で passenger を install する。
% sudo gem install passenger

インストーラーが入った模様。
passenger は、apache 用のインストールに、以下を実行しなければいけない。
passenger-install-apache2-module

で、これを実行するのだけれど passenger が gem1.8系としてインストールされる。
調べてみると自分の環境では、path が古い実行ファイルの方を優先していた。
以下の様に2つの実行ファイルが存在していたわけです。
/usr/bin/passenger-install-apache2-module
/opt/local/bin/passenger-install-apache2-module

で、この2つのファイルの違いは、以下の通り、version のみ。
% diff /usr/bin/passenger-install-apache2-module.bk /opt/local/bin/passenger-install-apache2-module
1c1
< #!/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby
---
> #!/opt/local/bin/ruby1.9

これじゃあ 1.9系 でインストールされないわけだということで絶対パスで再度インストール開始
% sudo /opt/local/bin/passenger-install-apache2-module

しかし、今度は途中で止まってしまう。
--------------------------------------------
Compiling and installing Apache 2 module...
cd /opt/local/lib/ruby1.9/gems/1.9.1/gems/passenger-2.2.15
/opt/local/bin/ruby1.9 -S /opt/local/bin/rake clean apache2
# /opt/local/bin/ruby1.9 -S /opt/local/bin/rake clean apache2
/opt/local/lib/ruby1.9/1.9.1/rubygems.rb:340:in `bin_path': can't find executable rake for rake-0.8.7 (Gem::Exception) from /opt/local/bin/rake:19:in `
'
--------------------------------------------

これは、rake.gemspec が邪魔していることが原因らしく以下の様に退避させたら解決した。
mv /opt/local/lib/ruby1.9/gems/1.9.1/specifications/rake.gemspec /opt/local/lib/ruby1.9/gems/1.9.1/specifications/rake.gemspec.bk

install が順調に進むと最後に以下の様なものが出力される。
--------------------------------------------
The Apache 2 module was successfully installed.

Please edit your Apache configuration file, and add these lines:

LoadModule passenger_module /opt/local/lib/ruby1.9/gems/1.9.1/gems/passenger-2.2.15/ext/apache2/mod_passenger.so
PassengerRoot /opt/local/lib/ruby1.9/gems/1.9.1/gems/passenger-2.2.15
PassengerRuby /opt/local/bin/ruby1.9

After you restart Apache, you are ready to deploy any number of Ruby on Rails
applications on Apache, without any further Ruby on Rails-specific
configuration!

Press ENTER to continue.


--------------------------------------------
Deploying a Ruby on Rails application: an example

Suppose you have a Rails application in /somewhere. Add a virtual host to your
Apache configuration file and set its DocumentRoot to /somewhere/public:


ServerName www.yourhost.com
DocumentRoot /somewhere/public # <-- be sure to point to 'public'!

AllowOverride all # <-- relax Apache security settings
Options -MultiViews # <-- MultiViews must be turned off



And that's it! You may also want to check the Users Guide for security and
optimization tips, troubleshooting and other useful information:

/opt/local/lib/ruby1.9/gems/1.9.1/gems/passenger-2.2.15/doc/Users guide Apache.html

Enjoy Phusion Passenger, a product of Phusion (www.phusion.nl) :-)
http://www.modrails.com/

Phusion Passenger is a trademark of Hongli Lai & Ninh Bui.


これを httpd.conf に反映して apache を再起動したら、本番環境アプリが動きました。

Ruby1.9.2 + Rails3.0

gem で rails3 をインストールしようとしたところ以下の様なエラーが出た。
% sudo gem install rails
Password:
ERROR: Error installing rails:
activesupport requires Ruby version >= 1.8.7.

ruby は、1.9.2 インストールしたのになーと思って gem の環境を確認する。
% gem env
RubyGems Environment:
 - RUBYGEMS VERSION: 1.3.7
 - RUBY VERSION: 1.8.6 (2009-06-08 patchlevel 369) [universal-darwin9.0]
 - INSTALLATION DIRECTORY: /Library/Ruby/Gems/1.8
 - RUBY EXECUTABLE: /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby
 - EXECUTABLE DIRECTORY: /usr/bin
 - RUBYGEMS PLATFORMS:
   - ruby
   - universal-darwin-9
 - GEM PATHS:
    - /Library/Ruby/Gems/1.8
    - /Users/User/.gem/ruby/1.8
    - /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8
 - GEM CONFIGURATION:
    - :update_sources => true
    - :verbose => true
    - :benchmark => false
    - :backtrace => false
    - :bulk_threshold => 1000
 - REMOTE SOURCES:
    - http://rubygems.org/

gem の環境的には、Ruby 1.8.6 を選んでいるらしい。
gem のしくみを全然理解せずに使っていたけど ruby のバージョンによってリポジトリを使い分ける必要があるわけか。まぁ、当然か。
Mac OS X の環境では、Ruby1.9.2 をインストールした際に、以下の様にインストールされている。
/opt/local/bin/ruby1.9
/opt/local/bin/gem1.9

なので、現在の gem(1.8) を gem1.8 に置き換えて gem1.9 を gem として置き換えてシンボリックリンクしておく。
% sudo mv /opt/local/bin/gem /opt/local/bin/gem1.8
% sudo cp -p /opt/local/bin/gem1.9 /opt/local/bin/gem
% ln -s /opt/local/bin/gem ~/bin/gem

(もちろん Ruby1.9 も必要であれば、同様にリンクしておく。)
% sudo mv /opt/local/bin/ruby /opt/local/bin/ruby1.8
% /opt/local/bin/ruby1.9 /opt/local/bin/ruby
% ln -s /opt/local/bin/ruby ~/bin/ruby

一度、shell に入り直して gem の環境を確認。
% gem env
RubyGems Environment:
  - RUBYGEMS VERSION: 1.3.7
  - RUBY VERSION: 1.9.2 (2010-08-18 patchlevel 0) [i386-darwin9]
  - INSTALLATION DIRECTORY: /opt/local/lib/ruby1.9/gems/1.9.1
  - RUBY EXECUTABLE: /opt/local/bin/ruby1.9
  - EXECUTABLE DIRECTORY: /opt/local/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86-darwin-9
  - GEM PATHS:
     - /opt/local/lib/ruby1.9/gems/1.9.1
     - /Users/User/.gem/ruby/1.9.1
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - http://rubygems.org/

gem が Ruby1.9系として動くことを確認できた。

gem を更新する。
% sudo gem update

rails を再度インストールしてみる。
% sudo gem install rails

エラーは、出ずに完了できた。
% gem list rails

*** LOCAL GEMS ***

rails (3.0.0)


rails のバージョンを確認
% rails -v
Rails 2.3.8

/opt 配下に設置された rails のバージョンを確認
% /opt/local/bin/rails -v
Rails 3.0.0

これもシンボリックリンクする。
% ln -s /opt/local/bin/rails ~/bin/rails

rails のバージョンを再確認
% rails -v
Rails 3.0.0


この後、実際にプロジェクトを作成した時に気がついたのが rake コマンド。
% rake db:migrate
(in /Users/User/rails3/aaa)
rake aborted!
uninitialized constant Bundler
/Users/User/rails3/aaa/Rakefile:4
(See full trace by running task with --trace)

abort する。

どうやら ruby1.8用の rake で動いていたらしい。
こちらも同様にシンボリックリンクして完了。
% sodu /opt/local/bin/rake /opt/local/bin/rake1.8
% sudo cp -p /opt/local/bin/rake1.9 /opt/local/bin/rake
% ln -s /opt/local/bin/rake ~/bin/rake


これで、無事に Ruby1.9.2 + Rails3.0 の環境ができました。

Ruby on 松江ラーメン

Ruby と松江ラーメンのコラボだそうです。
このラーメンの売り上げの一部が Ruby 開発の為に寄付されているそうです。

というわけで........








楽天で買ってみました。







蓋を開けると「だんだん」= 「ありがとう」の説明が書いてあります。










中には、しじみ醤油スープと生タイプの麺がそれぞれ2つ入ってます。

調理方法は、麺を2,3分好みの固さ(細麺なので注意)になるまで茹でてスープ用に沸騰したお湯 300cc 程度にスープを溶かして完了。








できあがりの写真は、ネギをトッピングしている。スープが美しい。

そして気になる味についてですが、油断してました。これ、ほんとよくできてます。旨い!!しじみのダシが凄く効いてます。

家庭用でこれだけの味が出せるのは、驚きです、是非お試しを!!!



RVM (Ruby Version Manager)

gem に RVM というものがあり、バージョンの違う複数の Ruby を切り替えて使う事ができる。
インストールして shell の設定ファイルを少しいじると使える様になるらしいです。
そして、tcsh では、使えないらしい。

まず、gem を更新する。
% sudo gem update

rvm をインストールする。
% sudo gem install rvm

以下のメッセージが出る。
********************************************************************************

In order to setup rvm for your user's environment you must now run rvm-install.
rvm-install will be found in your current gems bin directory corresponding to where the gem was installed.

rvm-install will install the scripts to your user account and append itself to your profiles in order to
inject the proper rvm functions into your shell so that you can manage multiple rubies.

********************************************************************************
Successfully installed rvm-1.0.2
1 gem installed
Installing ri documentation for rvm-1.0.2...
Installing RDoc documentation for rvm-1.0.2...

rvm-install を実行する。
% rvm-install

以下のメッセージが出る。

    .
    .
    .
You must now finish the install manually:
1) Place the folowing line at the end of your shell's loading files(.bashrc or .bash_profile for bash and .zshrc for zsh), after all path/variable settings:
[[ -s $HOME/.rvm/scripts/rvm ]] && source $HOME/.rvm/scripts/rvm
Please note that this must only occur once - so, you only need to add it the first time you install rvm.
2) Ensure that there is no 'return' from inside the .bashrc file. (otherwise rvm will be prevented from working properly).
This means that if you see '[ -z "$PS1" ] && return' then you must change this line to:
if [[ -n "$PS1" ]] ; then
... original content that was below the && return line ...
fi # <= be sure to close the if.
#EOF .bashrc
Be absolutely *sure* to REMOVE the '&& return'.
If you wish to DRY up your config you can 'source ~/.bashrc' at the bottom of your .bash_profile.
placing all non-interactive items in the .bashrc, including the 'source' line above
3) Then CLOSE THIS SHELL and open a new one in order to use rvm.

Installation of RVM to /Users/user_name/.rvm/ is complete.

.bashrc に以下を追加
if ( -s $HOME/.rvm/scripts/rvm ) then
    source $HOME/.rvm/scripts/rvm
fi


新たに shell を立ち上げると rvm が使える様になる。

rvm で ruby1.9.2 を install する。
% rvm install ruby-1.9.2

切り換え対象を確認する。
% rvm list

切り替える
% rvm use 1.9.2

rails3

rails2 から rails3 への変更は、かなり大きいようです。

HTML5 サポート
jQuery サポート
Ruby1.9 サポート
Merb 統合

などなど、

こちらの書籍が非常にわかりやすくまとまってます。


install 推奨環境は、以下の感じ。
Ruby1.8.7 以上
RubyGems 1.3.7 以上
Git 1.6 以上

gem でインストール
% gem i rails


基本的なコマンドが変わっているのでメモ。
新規プロジェクト作成(new というサブコマンドが必要になったので注意)
% rails new book_store

rails new option を設定可能。
-O ActiveRecord を入れない
-J prototype.js を入れない
-T Test::Unit を入れない

generate コマンドが rails コマンドのサブコマンドになった為 "g" の一文字となった。
以下 scaffold の例。
% rails g scaffold book title:string price:integer

scaffold で作成される views の new.html.erb と edit.html.erb が共通化されて _form.html.erb となった。
app/views/books/_form.html.erb

rake は、大きな変更無し。
% rake db:migrate

テストの実行。これも変化無し。
% rake

テスト起動。script/server も rails のサブコマンドになった。
% rails s

サーバーが起動したらブラウザで以下にアクセスして確認。
http://localhost:3000/books

コンソールも rails のサブコマンドになった。
% rails c


まだまだ変更点があるようなのでいろいろ試してみたいですね。

ONE PIECE 4週連続で休載

ワンピースが 4週連続で読めなくる事がわかりました。
HUNTERXHUNTER と違ってちゃんと連載してきましたからね。
尾田先生には、ゆっくり休んでもらいたいものです。

ストーリーの中では、2年後にみんな再会って感じになってます。
4週間後が楽しみですね。それまでは、NARUTO で繋ぎます。
<< 前へ     >>次へ
×

この広告は30日以上新しい記事の更新がないブログに表示されております。