2012年3月23日金曜日
Rails Appl からメール送信すると「end of file reached」のエラーが...
■RAILS LOG
end of file reached
■メールログ
Mar 22 18:27:22 yoru-navi postfix/smtpd[15852]: connect from localhost.localdomain[127.0.0.1]
Mar 22 18:27:22 yoru-navi postfix/smtpd[15852]: warning: SASL: Connect to private/auth failed: No such file or directory
Mar 22 18:27:22 yoru-navi postfix/smtpd[15852]: fatal: no SASL authentication mechanisms
Mar 22 18:27:23 yoru-navi postfix/master[15639]: warning: process /usr/libexec/postfix/smtpd pid 15852 exit status 1
Mar 22 18:27:23 yoru-navi postfix/master[15639]: warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling
■no SASL authentication mechanisms(SASLがない)???
SASLとは、コネクション・ベースのプロトコルに認証機能を付加する仕様。。らしい。
いろいろ調べたら cyrus-sasl ってのがあるらしい。
PostfixにSASLを付加するライブラリが、cyrus-sasl っでこと?
んじゃ、何が足りないか?
調査、ちょうさ...
# rpm -qa | grep cyrus-sasl
cyrus-sasl-devel-2.1.22-4
cyrus-sasl-2.1.22-4
cyrus-sasl-lib-2.1.22-4
本来は、こんなカンジ。。らしい...
# rpm -qa | grep cyrus-sasl
cyrus-sasl-devel-2.1.22-4
cyrus-sasl-2.1.22-4
cyrus-sasl-lib-2.1.22-4
cyrus-sasl-plain-2.1.22-4
cyrus-sasl-md5-2.1.22-4
あれ? 足りない!
cyrus-sasl-plain-2.1.22-4
cyrus-sasl-md5-2.1.22-4
インストールする。
yum install cyrus-sasl-plain
yum install cyrus-sasl-md5
その後、postfixを再コンパイルする必要がありそう...
2012年3月13日火曜日
Rails3.2でJavaScriptやCSSおよび画像を組込む
デザイナーが、トップページのHTML、CSSおよび、Javascriptを持ってきた。
早速Rails3.2のアプリに実装したいのだが...
Rails3.2は、アセットパイプラインって機能があって、なにものかよくわかっていない。
さらに、CoffeeScriptやら、SCSSなんていわれても..
とりあえず、この2者はおいておいて..
いただいた、HTML、CSS、JavaScript、画像を設置してみる。
■HTML設置
これは、erb形式に変換すればいいだけだから問題ないでしょう。
ただし、はじめて知ったことがあったのでメモ。
それは、グローバルナビゲーションのコーディングで..
↓↓ HTML は以下のようになっていた。
<ul class="gnavi">
<li><a href=#><img src="gn1.jpg" height="47" class="swap" /></a></li><!--
--><li><a href=#><img src="gn2.jpg" height="47" class="swap" /></a></li><!--
--><li><a href=#><img src="gn3.jpg" height="47" class="swap" /></a></li><!--
--><li><a href=#><img src="gn4.jpg" height="47" class="swap" /></a></li><!--
--><li><a href=#><img src="gn5.jpg" height="47" class="swap" /></a></li><!--
--><li><a href=#><img src="gn6.jpg" height="47" class="swap" /></a></li>
</ul>
<script type="text/javascript">
これでは、前述の未実装コードを所定の位置に書くことができない。
早速Rails3.2のアプリに実装したいのだが...
Rails3.2は、アセットパイプラインって機能があって、なにものかよくわかっていない。
さらに、CoffeeScriptやら、SCSSなんていわれても..
とりあえず、この2者はおいておいて..
いただいた、HTML、CSS、JavaScript、画像を設置してみる。
■HTML設置
これは、erb形式に変換すればいいだけだから問題ないでしょう。
ただし、はじめて知ったことがあったのでメモ。
それは、グローバルナビゲーションのコーディングで..
↓↓ HTML は以下のようになっていた。
<ul class="gnavi">
<li><a href=#><img src="gn1.jpg" height="47" class="swap" /></a></li><!--
--><li><a href=#><img src="gn2.jpg" height="47" class="swap" /></a></li><!--
--><li><a href=#><img src="gn3.jpg" height="47" class="swap" /></a></li><!--
--><li><a href=#><img src="gn4.jpg" height="47" class="swap" /></a></li><!--
--><li><a href=#><img src="gn5.jpg" height="47" class="swap" /></a></li><!--
--><li><a href=#><img src="gn6.jpg" height="47" class="swap" /></a></li>
</ul>
これを、
↓↓下のように実装すると...画像と画像の間に隙間ができる。
<ul class="gnavi">
<li><a href=#><img src="gn1.jpg" height="47" class="swap" /></a></li>
<li><a href=#><img src="gn2.jpg" height="47" class="swap" /></a></li>
<li><a href=#><img src="gn3.jpg" height="47" class="swap" /></a></li>
<li><a href=#><img src="gn4.jpg" height="47" class="swap" /></a></li>
<li><a href=#><img src="gn5.jpg" height="47" class="swap" /></a></li>
<li><a href=#><img src="gn6.jpg" height="47" class="swap" /></a></li>
</ul>
<li><a href=#><img src="gn1.jpg" height="47" class="swap" /></a></li>
<li><a href=#><img src="gn2.jpg" height="47" class="swap" /></a></li>
<li><a href=#><img src="gn3.jpg" height="47" class="swap" /></a></li>
<li><a href=#><img src="gn4.jpg" height="47" class="swap" /></a></li>
<li><a href=#><img src="gn5.jpg" height="47" class="swap" /></a></li>
<li><a href=#><img src="gn6.jpg" height="47" class="swap" /></a></li>
</ul>
デザイナーに問い合わせた。
- リストのメンバーとメンバー間に、内容なしのコメント<!-- -->を入れ、更に、コメント内で改行する(赤字の部分)ことで画像間を詰めて表示できる。
- ただし、<li>~</li>の途中で改行すると、うまくいかなかった。
らしいので、そのとおりに実装し、正常表示を確認できた。
なお、実装は、erbなので、link_toや、image_tagを用いていることは言うまでも無いデス!
■画像の設置
ページ内の画像はどこに置くか?
Rails3.2では、publicディレクトリ配下に、magesディレクトリはない。 では、どこ?
- 画像置き場は、app/assets/images 。
- HTMLからの参照は、上記直下なら、画像名だけでよい。
例) image_tag "image.jpg", :alt=>"test"
■CSSの設置
CSSはどこに? ..そう、やっぱ、app/assets 配下の stylesheetsディレクトリ。
今回は、いただいた CSSをそのまま置いてみた。
ところが、CSSに直接指定する画像は、どのように記述すればいいの?
ってことで、下記。
- まず、拡張子を〝erb〟にする。
つまり、ルビーコードが埋め込めるってこと。 - そんで、画像の参照は、asset_path() 関数を用いる。
→ background: url(<%= asset_path('image_bg.jpg') %>) - 最後に、HTMLでのLINKは、デフォルトのまま。
→ <%= stylesheet_link_tag "application", :media => "all" %>
■JavaScriptの設置
なんか、下のとおり、いっぱい書いてあったけど、どうすればいいの?
<script type="text/javascript" src="./js/jquery.js"></script>
<script type="text/javascript">
jQuery.noConflict();
var j$ = jQuery;
</script>
<script type="text/javascript" src="../js/jquery-1.3.2.min.js"></script>
:
(以下省略)
とりあえず、いただいたデザインで、JavaScriptが必要なのは、グローバルナビゲーションをオンマウスで変化させることだけなので、その部分だけ設置することにする。
いろいろググってみたり、app/assets/stylesheets 配下に jsファイルを置いてみたり...
んで、うまくできたのが、以下。
- 必要なのは、
- jquery.js
- jquery_ujs.js
- rollover.js
- jquery.js と、 jquery_ujs.js はデフォルトで展開される。
- rollover.js は、他者が作ったスクリプトなので、以下へ配置する。
- vendor/assets/javascripts/
- html.erbへの記述は、デフォルトのまま。
- <%= javascript_include_tag "application" %>
<script type="text/javascript">
jQuery.noConflict();
var j$ = jQuery;
</script>
でも、こいつは、rollover.jsの前、jquery~の後におかなければならないらしい。
なぜなら、〝$〟関数(?)を〝j$〟に置き換えていて、それをrollover.jsが使っているから。
なぜなら、〝$〟関数(?)を〝j$〟に置き換えていて、それをrollover.jsが使っているから。
view への記述は、
<%= javascript_include_tag "application" %>
そんで、展開されるのは、
<script src="/assets/jquery.js?body=1" type="text/javascript"></script>
<script src="/assets/jquery_ujs.js?body=1" type="text/javascript"></script>
<script src="/assets/rollover.js?body=1" type="text/javascript"></script>
<script src="/assets/pc/top.js?body=1" type="text/javascript"></script>
<script src="/assets/application.js?body=1" type="text/javascript"></script>
これでは、前述の未実装コードを所定の位置に書くことができない。
なので、
- rollover.js の〝j$〟を〝jQuery〟に変更する。
....無事できました。
2012年3月12日月曜日
WEB+DB(vol58)の RAILS3実践チュートリアル やってみる
Rails3.2で、 「WEB+DB(vol58)の RAILS3実践チュートリアル」を やってみた。
前出の作業リストに残りのチュートリアルを書き加えていく。
■ブログ投稿機能実装
①rails new aplname -d mysql --skip-bundle
②cd aplname
③vi Gamfile -> gem therubyracer を追加。
④bundle install
⑤JQuery本体のありか
ここから、jQueryの最新バージョンのCDNをチェック
->http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.j だった..
⑥設定
vi app/assets/javascripts/application.js
->(削除) //= require jquery
vi app/views/layouts/application.html.erb
(追加) <%= javascript_include_tag
' http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js %>
⑤vi config/database.yml
-> 11 development:
12 adapter: mysql2
13 encoding: utf8
14 reconnect: false
15 database: aplname_development
16 pool: 5
17 username: dbuser # DBMで生成
18 password: dbpass # DBMで生成
19 socket: /var/lib/mysql/mysql.sock
⑥rake db:create
⑦rails g scaffold post title:string body:text #ブログ投稿機能生成⑧rake db:migrate
⑨rake #テストしてみる
-> :
Finished in 0.001814 seconds.
0 tests, 0 assertions, 0 failures, 0 errors, 0 skips
:
⑩vi app/models/post.rb
-> validates :title, :presence => true, :length => {:maximum => 20}
(項目) (入力必須) (最大長20文字)
# 項目ごとに設定できるため、可読性がよくなった SexyValidation 記法
⑪コンソールから確認
rails c
->Post.create!
->ActiveRecord::RecordInvalid: Validation failed: Title can't be blank
->Post cretae! :title => 'ぽ' *21
->ActiveRecord::RecordInvalid: Validation failed: Title is too long
(maximum is 20 characters)
->Post cretae! :title => 'ぽsuと'
->INSERT INTO `posts` (`body`, `cre .....
追加されたOK!
->quit
■コメント投稿機能実装
①モデルとテーブル生成
rails g model comment post:references comment:string name:string
rake db:migrate
②コントローラ生成
rails g controller comments
③投稿とコメント各データの関連を設定
vi app/models/post.rb -> has_many :comments を追加。
## modelで、post:references と指定すると、
## 自動的に、項目名が、post_idとなり、
## model上にも belongs_to:post が追加されるのね..
④コメントのためのルーティング
vi config/routes.rb
->resources :posts do
resources :comments, :only =>[:new, :create]
end
⑤コメント投稿画面(ブログ記事詳細表示画面下部に設置)
vi app/views/posts/show.html.erb
-><hr>
<%= render @post.comments.build %>
# buildした commentsインスタンス をrender に渡すと
# 規約で、comments/_comment という名前のパーシャルを指す。
⑥...なので、comment投稿フォーム作成は次のとおり
vi app/views/comments/_comment.html.erb
-> <%= form_for [comment.post, comment] do |f| %>
:
<div class="field">
<%= f.submit %>
</div>
<% end -%>
⑦コメント登録アクションを実装
vi app/controllers/comments_controller.rb
-> def create
post = Post.find params[:post_id]
post.comments.create params[:comment]
redirect_to post
end
⑧最後に投稿されたコメントの表示(ブログ記事詳細表示画面下部に設置)
vi app/views/posts/show.html.erb (以下を追加)
-> <p>
<b>comments</b>
<% @post.comments.each do |comment| %>
<p><%= "#{comment.comment} by #{comment.name}" %></p>
<% end -%>
</p>
■ActiveModelで検索機能を実装
Rails3から登場した「ActiveModel」を使えば、データベースのカラムと連動しない
フィールドを持つモデルっぽいのが作れるらしい。
これで、検索機能を作ってみる。
①モデル生成
vi app/models/search_form.rb (新規作成)
-> class SearchForm
extend ActiveModel::Naming
include ActiveModel::Conversion #この2行と persisted? で
#form_for の引数に使えるようになる。
:
def initialize(param)
end
def persisted?
false
end
end
②検索フォームを一覧画面の先頭に設置
Rails3から登場した「ActiveModel」を使えば、データベースのカラムと連動しない
フィールドを持つモデルっぽいのが作れるらしい。
これで、検索機能を作ってみる。
①モデル生成
vi app/models/search_form.rb (新規作成)
-> class SearchForm
extend ActiveModel::Naming
include ActiveModel::Conversion #この2行と persisted? で
#form_for の引数に使えるようになる。
:
def initialize(param)
end
def persisted?
false
end
end
②検索フォームを一覧画面の先頭に設置
vi app/views/posts/index.html.erb
-> <%= form_for @search_form, :url =>posts_path, :html =>{:method =>:get} do |f| %>
:
<% end -%> #シンボル :search_form 先に作ったモデルをあらわす。
-> <%= form_for @search_form, :url =>posts_path, :html =>{:method =>:get} do |f| %>
:
<% end -%> #シンボル :search_form 先に作ったモデルをあらわす。
....
あれ? JQueryがデフォルト??
これまで、Javascriptを除いた状態で、rails new して、Jquery を使えるようにと、四苦八苦してたら...
な・なんと、Rail3.1からは、JQueryがデフォルトになっていると...
ナので、アプリから作り直しました(涙)
rails new aplname -d mysql --skip-bundle
cd aplname
bundle install --path vendor/bundle
:
Installing execjs (1.3.0)
:
Installing jquery-rails (2.0.1)
:
## 何もしないのにインストールされたようです。
■でも、scaffold でエラーになる???
rails g scaffold post title:string body:text
/home/yoru-navi/blog_app/vendor/bundle/ruby/1.9.1/gems/execjs-
1.3.0/lib/execjs/runtimes.rb:50:in `autodetect': Could not find a JavaScript runtime. See
https://github.com/sstephenson/execjs for a list of available runtimes.
(ExecJS::RuntimeUnavailable)
from /home/yoru-navi/blog_app/vendor/bundle/ruby/1.9.1/gems/execjs-1.3.0/lib
/execjs.rb:5:in `<module:ExecJS>'
from /home/yoru-navi/blog_app/vendor/bundle/ruby/1.9.1/gems/execjs-1.3.0/lib
/execjs.rb:4:in `<top (required)>'
:
:
なんで..? therubyracer がインストールされていないなぁ...
◆確認
①bundle list | grep therubyracer
◆インストールしてみる。。
①Gamfile に gem therubyracer を追加して、
②bundle install
③scaffold を再実行。 →できた!!
■ここまでの作業をまとめると...(ブログっぽいAPLを作る)
①rails new aplname -d mysql --skip-bundle
②cd aplname
③vi Gamfile -> gem therubyracer を追加。
④bundle install
⑤vi config/database.yml
-> 11 development:
12 adapter: mysql2
13 encoding: utf8
14 reconnect: false
15 database: aplname_development
16 pool: 5
17 username: dbuser # DBMで生成
18 password: dbpass # DBMで生成
19 socket: /var/lib/mysql/mysql.sock
⑧rake db:migrate
⑨rake #テストしてみる
-> :
Finished in 0.001814 seconds.
0 tests, 0 assertions, 0 failures, 0 errors, 0 skips
:
な・なんと、Rail3.1からは、JQueryがデフォルトになっていると...
ナので、アプリから作り直しました(涙)
rails new aplname -d mysql --skip-bundle
cd aplname
bundle install --path vendor/bundle
:
Installing execjs (1.3.0)
:
Installing jquery-rails (2.0.1)
:
## 何もしないのにインストールされたようです。
■でも、scaffold でエラーになる???
rails g scaffold post title:string body:text
/home/yoru-navi/blog_app/vendor/bundle/ruby/1.9.1/gems/execjs-
1.3.0/lib/execjs/runtimes.rb:50:in `autodetect': Could not find a JavaScript runtime. See
https://github.com/sstephenson/execjs for a list of available runtimes.
(ExecJS::RuntimeUnavailable)
from /home/yoru-navi/blog_app/vendor/bundle/ruby/1.9.1/gems/execjs-1.3.0/lib
/execjs.rb:5:in `<module:ExecJS>'
from /home/yoru-navi/blog_app/vendor/bundle/ruby/1.9.1/gems/execjs-1.3.0/lib
/execjs.rb:4:in `<top (required)>'
:
:
なんで..? therubyracer がインストールされていないなぁ...
◆確認
①bundle list | grep therubyracer
◆インストールしてみる。。
①Gamfile に gem therubyracer を追加して、
②bundle install
③scaffold を再実行。 →できた!!
■ここまでの作業をまとめると...(ブログっぽいAPLを作る)
①rails new aplname -d mysql --skip-bundle
②cd aplname
③vi Gamfile -> gem therubyracer を追加。
④bundle install
⑤vi config/database.yml
-> 11 development:
12 adapter: mysql2
13 encoding: utf8
14 reconnect: false
15 database: aplname_development
16 pool: 5
17 username: dbuser # DBMで生成
18 password: dbpass # DBMで生成
19 socket: /var/lib/mysql/mysql.sock
⑥rake db:create
⑦rails g scaffold post title:string body:text #ブログ投稿機能生成⑧rake db:migrate
⑨rake #テストしてみる
-> :
Finished in 0.001814 seconds.
0 tests, 0 assertions, 0 failures, 0 errors, 0 skips
:
2012年3月8日木曜日
開発環境 VIM PowerUP
Railsに便利なVIMのプラグインをインストールしてみた。
かなり便利になるハズ。。
■vim.ruby
git clone http://github.com/vim-ruby/vim-ruby.git
cd vim-ruby/
git checkout vim7.3
rake package
gem install etc/package/vim-ruby-2012.03.08.gem
sudo gem install etc/package/vim-ruby-2012.03.07.gem
cd bin
sudo ruby vim-ruby-install.rb
ll ~/.vim
■rails.vim
Vundleを使わないでインストール。
①cd ~/.vim
②wget http://www.vim.org/scripts/download_script.php?src_id=10297
③unzip rails.zip
...これだけでOK。
※ただし、今回、autoloadディレクトリのオーナーが、
rootになっていたため失敗した!
ちゃんと次のディレクトリが更新できるようにしておこう!
①~/.vim/autoload、②~/.vim/doc、③~/.vim/plugin
・使い方
ファイル間移動:
gf ... カーソル位置の文字列から適切なファイルを開く
:R ... Controller ⇔ View
Model ⇒ 関連のMIGRATION ⇒ 次のMIGRATION
:A ... Controller ⇔ Test
MIGRATION ⇒ 前のMIGRATION
・rails.vimじゃないけど...
:ls ... バッファーリスト
:b<バッファ番号> ... バッファ番号のファイルに移動
■NERDtree (ProjectをTree表示..:Rprojectコマンドは廃止された)
wget http://www.vim.org/scripts/download_script.php?src_id=11834
unzip NERD_tree.zip
・使い方
vim から、:NERDTree を叩くと、開いているファイルのプロジェクト
ツリーが表示される。
Ctrl + ww ツリーと編集中のバッファ間を移動。
ツリーウィンドウで、m 新規ファイル、移動、削除、コピーのメニュー表示。
キャンセルは、escキー。
かなり便利になるハズ。。
■vim.ruby
git clone http://github.com/vim-ruby/vim-ruby.git
cd vim-ruby/
git checkout vim7.3
rake package
gem install etc/package/vim-ruby-2012.03.08.gem
sudo gem install etc/package/vim-ruby-2012.03.07.gem
cd bin
sudo ruby vim-ruby-install.rb
ll ~/.vim
■rails.vim
Vundleを使わないでインストール。
①cd ~/.vim
②wget http://www.vim.org/scripts/download_script.php?src_id=10297
③unzip rails.zip
...これだけでOK。
※ただし、今回、autoloadディレクトリのオーナーが、
rootになっていたため失敗した!
ちゃんと次のディレクトリが更新できるようにしておこう!
①~/.vim/autoload、②~/.vim/doc、③~/.vim/plugin
・使い方
ファイル間移動:
gf ... カーソル位置の文字列から適切なファイルを開く
:R ... Controller ⇔ View
Model ⇒ 関連のMIGRATION ⇒ 次のMIGRATION
:A ... Controller ⇔ Test
MIGRATION ⇒ 前のMIGRATION
・rails.vimじゃないけど...
:ls ... バッファーリスト
:b<バッファ番号> ... バッファ番号のファイルに移動
■NERDtree (ProjectをTree表示..:Rprojectコマンドは廃止された)
wget http://www.vim.org/scripts/download_script.php?src_id=11834
unzip NERD_tree.zip
・使い方
vim から、:NERDTree を叩くと、開いているファイルのプロジェクト
ツリーが表示される。
Ctrl + ww ツリーと編集中のバッファ間を移動。
ツリーウィンドウで、m 新規ファイル、移動、削除、コピーのメニュー表示。
キャンセルは、escキー。
2012年3月7日水曜日
必要なプラグインの考察
必要なプラグインをインストール。
これまでと重複してるところもあるけど...
■リスト
- ImageMagick
- execjs
- therubyracer
- jpmobile
- rmagick
- paperclip
- mysql2
wget ftp://ftp.imagemagick.org/pub/ImageMagick/ImageMagick.tar.gz
tar xvfz ImageMagick.tar.gz
cd ImageMagick-6.7.5-10/
./configure
make
make install
convert -version #バージョン確認
>Version: ImageMagick 6.7.5-10 2012-03-06
■Gamfile に追加
gem 'execjs'
gem 'therubyracer'
gem 'jpmobile', :require => 'action_pack'
gem 'rmagick'
gem 'paperclip'
■bundle を実行。 ⇒ エラー発生
bundle中にエラー!
rmagickのインストールでエラーらしい...
Building native extensions. This could take a while...
ERROR: Error installing rmagick:
ERROR: Failed to build gem native extension.
:
ズラズラーっと出たメッセージの中に、以下がいっぱい!
Perhaps you should add the directory containing `MagickCore.pc' to the PKG_CONFIG_PATH environment variable No package 'MagickCore' found
なので、
- env | grep PKG_CONFIG_PATH ⇒ ない
- find / -name MagickCore.pc # MagickCore.pcを探す。 >/usr/local/lib/pkgconfig/MagickCore.pc
- vi ~/.bash_profile # 常に PKG_CONFIG_PATH を追加するようにする。 以下を最終行に追加する。 >export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
■bundle 再実行 ⇒OK
2012年3月5日月曜日
RAILS3でサイトの本格開発に向けて
先日は、以前にRAILS3をVPS環境にセットアップしたメモを投稿してみた。
RAILSアプリの生成までで終えていたのだが、本日からは、DBも利用した本格的なサイトを構築していくための技術的な開発ログとしてメモって行こう..
...ということで、Rails3の最新バージョンを確認したら...
うわぁ! 3.2までいってる!
なので、
RAILSアプリの生成までで終えていたのだが、本日からは、DBも利用した本格的なサイトを構築していくための技術的な開発ログとしてメモって行こう..
...ということで、Rails3の最新バージョンを確認したら...
うわぁ! 3.2までいってる!
なので、
- ルートユーザに移動:su -
- gemを更新:gem update --system
- RAILS3.2にアップグレード:gem update rails
- RUBYも更新しとこ: gem update ruby
- bundlerも..:gem update bundle
- サーバーマシン:
お名前comのVPSでお世話になる。 - ぷラットフォーム&そフトウェア:
- centos
- RAILS3.2.2
- MySQL5.0.77
- ruby1.9.2p136 (2010-12-25 revision 30365) [x86_64-linux]
- gem1.8.17
- Bundler version 1.0.22
- Phusion Passenger version 3.0.8
■アプリ作ってみた
まずは、railsアプリを作ってみる。場所は、ユーザホーム。内容は、ブログっぽいやつ。
まずは、railsアプリを作ってみる。場所は、ユーザホーム。内容は、ブログっぽいやつ。
- rails new blog_app -J -d mysql
- rails:RAILS3では、コマンドがrailsコマンドに統一されているらしい。
- new:新しいrailsアプリを作る。
- blog_app :アプリ名称。
- -J:RAILSデフォルトでアプリに組み込まれるJavaScriptライブラリを除去。
後で、JQueryをインストールするため。 - -d mysql:利用するデータベースをmysqlに指定。
- あれ?
例のごとく、いろいろ生成してくれて、bundler install が実行されたところで、password を求められた。
Enter your password to install the bundled RubyGems to your system:
ところが、
ログインユーザパスワードでも、
ルートのパスワードでも
続行できない!! 何度も、同じようにパスワードを要求してくる。
↓↓
ROOTでログインしなおして、再実行.....できた。パスワードすら聞いてこない??
それに、 bundler ってなに?
##調べてみる。
## ⇒ どうも、rails3から採用された機能で、gem形式のプラグインの導入するための
ツールらしい。
原因はよくわからないが、たぶん...
Bundlerに設定された機能が、システムにインストールされようとしているのでは..
なので、rootで実行するとできたのでは..
なら、rootパスワードで完了してくれてもいいのに...?? - 上記は、よくわからないが、とりあえず、
- ログインユーザでログインして、
- rails new して、
- パスワード入力のところで、ctrl+c でキャンセルする。
↓↓
これで、とりあえず、アプリはできた。 - 必要なプラグインをアプリへ導入
どんなプラグインがいいか....なにより mysql 接続用のモジュールはあるの? bundlerの設定ファイルのGemfileを覗いてみる > vi /home/blog_app/Gemfile ⇒gem mysql2 という記述が... ってことは、Bundler を実行すればよいのか? - アプリルートで、
- bundle install --path vendor/bundle
--path で指定したディレクトリにインストールされる機能が展開される。
そして、 .bundle/config が生成される。 - .bundle/config を覗いてみる。
cat .bundle/config
> --
> BUNDLE_PATH: vendor/bundle #導入した場所
> BUNDLE_DISABLE_SHARED_GEMS: "1" #以降システム側参照しない。 - 確認
bundle list | grep mysql
>* mysql2 (0.3.11)
おっ、はいってるっぽい。
念のため、インストールに指定したディレクトリも見てみる。
ll vendor/bundle/ruby/1.9.1/gems/mysql2-0.3.11/
>-rw-r--r-- 1 yoru-navi yoru-navi 12460 3月 4 17:34 CHANGELOG.md
>-rw-r--r-- 1 yoru-navi yoru-navi 25 3月 4 17:34 Gemfile
>-rw-r--r-- 1 yoru-navi yoru-navi 1090 3月 4 17:34 MIT-LICENSE
:
:
やっぱ、mysql2は導入されているようだ。 - データベース作成
rake db:create
>rake aborted!
>Could not find a JavaScript runtime. See https://github.com/sstephenson/execjs for a list of available runtimes.
エラーでたぞー!!
「JavaScript ランタイムが無い」だと?! - JavaScriptランタイムをインストールしなければ。。
- Gemfileに以下を追加して
gem 'execjs'
gem 'therubyracer' - bundle する。
bundle install - データベース再作成
rake db:create
⇒phpadmin で確認できた。 - scaffoldしてみる。
- rails g scaffold post title:string body:text
- rake db:migrate
⇒同じく、phpadmin で確認できた。 - データベースにユーザ追加しとこ
- mysql -u root -p mysql;
- mysql>GRANT ALL PRIVILEGES ON *.* TO user@host.jp
→ IDENTIFIED BY 'パスワード' ; - mysql>user@host.jpに全権限を付与。
WITH GRANT OPTIONなし。(その権限を他者へ付与する権限を与えない) - ユーザ確認 mysql>select host,user from user;
- アプリの db/database.yml
user と password には、上記で作った user と password にする。
お名前.comのVPSにRails3.0をインストール。
前々からRAILS3を使おうと思っていたけど、なかなか実行できなかったけど、
とうとう重い腰を上げなければならなくなった。
RAILS3でサイト構築しようと思う。
そこで、以前にやってみた、RAILS3のインストールまでの記録をアップします。
■DSN設定
①VPSサービスボタンで自動設定
②登録メールアドレスに変更完了通知が届く
■VPSCoonntrolPanel
①サーバーNaviにログイン https://www.onamae.com/navi/domain.html
・ドメインNaviにログイン
・右上の[サーバーNaviへ]からサーバーNaviにログイン
②左ペインの「ご利用サービス確認」
③「ご利用サーバー一覧」が表示されるのでいたイランからコントロー
ルパネルにログインする。
■SSHポートを解放
①システム設定→セキュリティ→ファイアーウォール
②SSHのポートを許可にする
■ユーザ設定
①ユーザー→rootアカウント
②rootのパスワード変更
③一般アカウントで管理者ユーザ確認
このアカウントでサーバーNaviにログインすると、すべて設定可能
④リモート作業にSSH(FTP)ユーザを登録しておく
■yumインストール -> ×
■Ruby1.8.7にアップグレード
42 wget ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p72.tar.bz2
43 tar xfj ruby-1.8.7-p72.tar.bz2
44 cd ruby-1.8.7-p72
45 ./configure --prefix=/usr --with-install-readline
46 make
⇒これでは、カレントディレクトリにインストールされただけ..
■Ruby1.9.2にアップグレード
wget ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p136.tar.bz2
cp ruby-1.9.2-p136.tar.bz2 /usr/src/redhat/SOURCES/
tar xfj ruby-1.9.2-p136.tar.bz2
cd ruby-1.9.2-p136
./configure
make
make install
■gemアップグレード
gem update system
■Railsインストール
gem install rails #最新Verをインストール。
gem install rails --version 2.2.2 #バージョン指定。複数Ver可能。
gem install jpmobile
■Passengerの導入
cmd>gem install passenger
cmd>passenger-install-apache2-module
LoadModule passenger_module ...
■Vhostの設定
/etc/httpd/conf/httpd.conf では、 Include conf.d/*.conf と設定されている。
それに従い、/etc/httpd/conf.d/ 下にアプリ用設定ファイルを置くことにする。
<VirtualHost *:80>
ServerName example.domain.jp
DocumentRoot /home/user01/rails_apl_root/public/
AddDefaultCharset UTF-8
RailsBaseURI /
RailsEnv development
PassengerEnabled on
PassengerDefaultUser user01
PassengerMaxPoolSize 2
</VirtualHost>
■DNSの設定
Aレコードを設定する。 例〕 example.domain.jp A 200.229.22.234
※お名前.com の「ドメインnavi」 → 「レンタルDNSレコード設定」で行う。
■アプリ生成 ….on Rails3
cmd>rails new rails_apl_root
■Apacheを再起動
/etc/init.d/httpd stop
/etc/init.d/httpd start
■確認
ウェブブラウザから、example.domain.jp にアクセス。
■403 Forbidden エラー発生
SELinuxは動作していない(getenforce)し...、
ドキュメントルート、Railsアプリのルートにアクセス制限はかけられていないし...、
いろいろ調べても原因がわからない。
そこで、Railsアプリのルートから遡った、各ディレクトリの権限をチェックしてみた。
ん、Railsアプリルートの親ディレクトリの権限がヘンだ??
700となっている。
早速、変更する。
cmd> chmod 755 “Railsアプリルートの親ディレクトリ”
おっ。できた!
とうとう重い腰を上げなければならなくなった。
RAILS3でサイト構築しようと思う。
そこで、以前にやってみた、RAILS3のインストールまでの記録をアップします。
■DSN設定
①VPSサービスボタンで自動設定
②登録メールアドレスに変更完了通知が届く
■VPSCoonntrolPanel
①サーバーNaviにログイン https://www.onamae.com/navi/domain.html
・ドメインNaviにログイン
・右上の[サーバーNaviへ]からサーバーNaviにログイン
②左ペインの「ご利用サービス確認」
③「ご利用サーバー一覧」が表示されるのでいたイランからコントロー
ルパネルにログインする。
■SSHポートを解放
①システム設定→セキュリティ→ファイアーウォール
②SSHのポートを許可にする
■ユーザ設定
①ユーザー→rootアカウント
②rootのパスワード変更
③一般アカウントで管理者ユーザ確認
このアカウントでサーバーNaviにログインすると、すべて設定可能
④リモート作業にSSH(FTP)ユーザを登録しておく
■yumインストール -> ×
■Ruby1.8.7にアップグレード
42 wget ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p72.tar.bz2
43 tar xfj ruby-1.8.7-p72.tar.bz2
44 cd ruby-1.8.7-p72
45 ./configure --prefix=/usr --with-install-readline
46 make
⇒これでは、カレントディレクトリにインストールされただけ..
■Ruby1.9.2にアップグレード
wget ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p136.tar.bz2
cp ruby-1.9.2-p136.tar.bz2 /usr/src/redhat/SOURCES/
tar xfj ruby-1.9.2-p136.tar.bz2
cd ruby-1.9.2-p136
./configure
make
make install
■gemアップグレード
gem update system
■Railsインストール
gem install rails #最新Verをインストール。
gem install rails --version 2.2.2 #バージョン指定。複数Ver可能。
gem install jpmobile
■Passengerの導入
cmd>gem install passenger
cmd>passenger-install-apache2-module
LoadModule passenger_module ...
PassengerRoot ...
PassengerRuby ...
上記3行が表示されるので、そのまま、アパッチのコンフィグファイルに追加する。
/etc/httpd/conf/httpd.conf■Vhostの設定
/etc/httpd/conf/httpd.conf では、 Include conf.d/*.conf と設定されている。
それに従い、/etc/httpd/conf.d/ 下にアプリ用設定ファイルを置くことにする。
<VirtualHost *:80>
ServerName example.domain.jp
DocumentRoot /home/user01/rails_apl_root/public/
AddDefaultCharset UTF-8
RailsBaseURI /
RailsEnv development
PassengerEnabled on
PassengerDefaultUser user01
PassengerMaxPoolSize 2
</VirtualHost>
■DNSの設定
Aレコードを設定する。 例〕 example.domain.jp A 200.229.22.234
※お名前.com の「ドメインnavi」 → 「レンタルDNSレコード設定」で行う。
■アプリ生成 ….on Rails3
cmd>rails new rails_apl_root
■Apacheを再起動
/etc/init.d/httpd stop
/etc/init.d/httpd start
■確認
ウェブブラウザから、example.domain.jp にアクセス。
■403 Forbidden エラー発生
SELinuxは動作していない(getenforce)し...、
ドキュメントルート、Railsアプリのルートにアクセス制限はかけられていないし...、
いろいろ調べても原因がわからない。
そこで、Railsアプリのルートから遡った、各ディレクトリの権限をチェックしてみた。
ん、Railsアプリルートの親ディレクトリの権限がヘンだ??
700となっている。
早速、変更する。
cmd> chmod 755 “Railsアプリルートの親ディレクトリ”
おっ。できた!
登録:
投稿 (Atom)