★RAILSのアプリ開発、Productionの手順メモ

★RAILSのアプリ開発、Productionの手順メモ
まずはRails Newから
なお、Productionモードを作ることを前提にしているので、Developmentモードの場合はこのProductionモードの指定Rails_ENVのところは不要

すっかりRailsの迷路にハマって出口がわからず、四苦八苦どころかその3乗くらい苦しんでる。
本を読んでもわからず、結局ひたすら、作りまくってRailsというフレームワークの手法や手順を覚えるしかないという結論に達して、ひたすら、チュートリアル本を見ながらRailsを学習チュウ。2018年3月3日
以下の内容は、Productionをメインに考えています。
また、自分はRailsを初めたばかりの初心者レベルの知識経験なので、誤解していることがあります。
Rails_envを設定して限定して設定していますが、もし全部の環境が必要なら、この設定は不要かもしれませんので、今度試してみます。
ここらへんもよくわからないし、Development開発についての解説は多いのに、Productionになると情報が少なく、エラーやトラブルも多い。だから余計にわからない。それがRailsが廃れた理由なのかな。

手順

Mysqlを使用します。Rails,Rubyがインストールされている前提
以下はアプリ作成の例です。scaffoldを使うこともできます。
概要は、コマンドを使って
book_adminというアプリのフォルダを作り
次に雛形を作り
DBの設計図を作って、DB,Tableを作成します。
これで、DBを含めた入れ物ができる感じです。
入れ物を準備するだけでも大変です
本当は入れ物はかんたんなはずなのに、ここまでを理解するのが大変でした。
開発者の理解力と吸収度と能力に差があると苦労します。

  1. (1)rails new book_admin -d mysql RAILS_ENV=production
     
  2. book_admin:アプリ名

  3. (1.5)Gemfileの# gem ‘therubyracer’, platforms: :ruby
    のところのコメント#を外すのだそうです。
  4. そしないと2番めでエラーになる

  5. (2)rails generate model Book name:string published_on:date price:integer number_of_page:integer invoke active_record

  6. rails generate:雛形、テンプレートを作る
    model:モデルデータ、テーブルとかを作成するために設計図を作る
    Book:テーブル名
    name,published_on,price,number_of_page:カラム、列のこと。:コロンの次は型を指定

    >>>ここでは、RAILS_ENVを指定しない。うっかり指定するとその環境名のカラム列が追加されてしまう。もし入れてしまったら、Migrateを実行する前に、
    /home/jhon/アプリ名/db/migrateの中のファイルを開いてRAILS_ENVのところを削除する。/home/jhon/のところは個人それぞれの環境により異なります。

  7. (3)mysql のユーザと権限Grantを追加
  8. >>>この権限付与はSQLITEでは不要になっている。だから苦しむ、というのは書籍の説明がSQLITEになっていて、Mysqlを使うユーザはなぜエラーが発生するのかよくわかっていない。つまり使用するDBによって作業手順が変わってしまうのがこのRailsの迷路から抜けられない。
     ようするに、Create、Migrateをする前にMysqlのユーザを作って権限を与えないと、Migrateでエラーが発生する。エラーによって権限がないことがわかるが、知らない人間にとってはなんのこっちゃになってしまう。

  9. (3.5)database.ymlを編集する
  10. (4)rake db:create RAILS_ENV=production
  11.  DBを作成

  12. (5)rake db:migrate RAILS_ENV=production
  13.  

もし、Migrateのときに、
DBのProductionがないと言われたら、いったんDBを消してもう一度DBを作り直してください。
rake db:drop:allで消しましょう。
でもproduction,test,developmentの全部が消えるので、消したいものだけ指定もできます。

こちらの記事もどうぞ