2012年9月3日月曜日

Railsアプリ実行したら、permission denied!!

久しぶりに、Railsアプリを作ってみた。
今までと同じ環境で作ってみた。

Rails3.2
passenger
  :

rails new して、アクセスしてみたら、「permission denied」発生!!
なぜだ...

ちょっとハマってしまったのでメモ....

原因:
  新たにユーザをつくり、ホームディレクトリ上で、rails new した。
  つまり、ホームディレクトリ配下にプロジェクトができたわけだが、
  ホームディレクトリのパーミッションは、drwx------ となっている。

対応;
  上述のホームディレクトリのパーミッションを変更。  ⇒ drwxr-xr-x

結果:
  ウェブブラウザでアクセスすると、Railsアプリの初期画面が表示された。

     ...あってんのかな??

2012年4月18日水曜日

ちょっと感動したファイルアップロード

画像のアップロードを「dragonfly」ってヤツでやってみた。
実装してみて、ちょころビット感動を覚えたので、忘れないうちに...

メモ、めも...

◆なぜに、dragonfly ??
Rails2.xのころは、file_column を利用していた。
あつかったアプリ(他社が開発)が使っていたから..
いろいろテクニックも覚え、それなりに重宝していたのだが、
画像アップロード時点で、必要なサイズを作ってしまうことから、
デザイン変更のたびに、古いサイズと新しいサイズが混在する
時期が発生したり、再登録作業を終えてからリリースしたりと、
なにかと苦労してしまう。

...なにかいいものは...とグーぐる先生へ。

見つけたのが、この dragonfly !!
こいつは、表示時に、必要なサイズへとリサイズしてくれるらしい。

これなら、VIEWの変更だけですむハズ...と、利用してみる。



◆インストール
めっちゃ簡単!

Gemfile に追加して、インストールし、ちょっとだけ設定すればいい。
前提として、OSへ、image-magick が、インストール済みとします。
(もちろんディレクトリはアプリルートですよぉ)

  1. vi Gemfile
      gem 'rack-cache', :require => 'rack/cache'
      gem 'dragonfly', '~>0.9.8'
  2. bundle install
  3. vi config/initializers/dragonfly.rb
      require 'draginfly/rails/images'
        ※起動時に、 dragonfly を読み込ませるため
            initializersにファイルを作成。
◆テーブル関連

  1. アップロード先のモデルに以下を追加する。

      class table < ActiveRecord::Base
        
    image_accessor :image
        
      end
  2. テーブルに項目を追加。
     
       image_name : string
       image_uid : string
◆アップロード

   <%= f.file_field :image %>



◆表示

  1. そのまま
    <%= image_tag @table.image.url %>
  2. 縮小、拡大
    強制的に...    <%= image_tag @table.image.thumb('500x300!').url %>
                     <%=  image_tag @table.image.process(:thumb, '700x200!').url %>
    縦横比維持... <%=  image_tag @table.image .process(:thumb, '700x200').url %>
  3. 変換
    <%= image_tag @table.image.jpg.url %>
    <%= image_tag @table.image.process(:greyscale).encode(:tiff).url %>












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>

 これを、
   ↓↓下のように実装すると...画像と画像の間に隙間ができる。
    <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>~</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が使っているから。

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

  ②検索フォームを一覧画面の先頭に設置
     vi app/views/posts/index.html.erb
        -> <%= 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: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キー。

2012年3月7日水曜日

必要なプラグインの考察


必要なプラグインをインストール。
これまでと重複してるところもあるけど...

■リスト
  1. ImageMagick
  2. execjs
  3. therubyracer
  4. jpmobile
  5. rmagick
  6. paperclip
  7. mysql2

■ImageMagick(root に移動)
 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

なので、


  1. env | grep PKG_CONFIG_PATH    ⇒ ない
  2. find / -name MagickCore.pc    # MagickCore.pcを探す。 >/usr/local/lib/pkgconfig/MagickCore.pc
  3. 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までいってる!

なので、
  1. ルートユーザに移動:su -
  2. gemを更新:gem update --system
  3. RAILS3.2にアップグレード:gem update rails
  4. RUBYも更新しとこ: gem update ruby
  5. bundlerも..:gem update bundle
ここで、サーバ環境整理。

  1. サーバーマシン:
    お名前comのVPSでお世話になる。
  2. ぷラットフォーム&そフトウェア:
    • 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 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パスワードで完了してくれてもいいのに...??
  • 上記は、よくわからないが、とりあえず、
    1. ログインユーザでログインして、
    2. rails new  して、
    3. パスワード入力のところで、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 ...

  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アプリルートの親ディレクトリ”

おっ。できた!