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 にする。

0 件のコメント:

コメントを投稿