ご指摘くだされ
VsCode
Windows、Linux、macOS上で動作するコードエディタである
[Visual Studio Codeのページ]
(https://code.visualstudio.com/)
mkdir ディレクトリ名
railsの作業ディレクトリ作成
(スペースを開けるならば半角スペース。全角ではエラー)
$ mkdir TestApp
$ cd TestApp
#実行後
C:\Users\ユーザー名\TestApp>
bundle exec rails new kuzunoApp -B
railsのプロジェクトを作成する
$ bundle init
# gem "rails"
↓
gem "rails"
$ bundle exec rails new ??? -B
[補].(どっと)の場合cdで階層を移動する必要はない
???の部分を.(ドット)にすると現在のディレクトリにRailsプロジェクトが生成されます。(この場合はcdの必要なし。
インストール実行時にターミナルの中で「Gemfileを上書きしていいか?」と聞かれますが、yで続行します)
Overwrite /Users/なまえ/ディレクトリ名/Gemfile? (enter "h" for help) [Ynaqdhm]
### [補]Bundlerのインストール
$ gem install bundler
【エラー】Could not find gem 'mysql2 (< 0.6.0, >= 0.4.4) x86-mingw32' in any of the gem sources listed in your Gemfile.
mysqlをインストールする
$ brew install mysql
[windowsの場合]
(https://dev.mysql.com/doc/refman/8.0/en/windows-installation.html)
bundle install
初回はパスを指定
$ bundle install --path vendor/bundle
これで、railsのコマンド(rails new)を利用することが出来るようになります
この時「Gemfile.lock」というファイルができ、これには、インストールしたgemの名前とバージョンが記載されてます
gemを加えたい時は、「Gemfile」に記述してもう一度bundle install
をします
[補]--path vendor/bundle
一度パス指定をするとその旨がファイルに記述されて次からは、そこに指定されたパスにインストールされるようになる
.bundleディレクトリ内のconfigファイルに設定が追記される
BUNDLE_PATH: "vendor/bundle"
システムのgemをできるだけクリーンに保つため作業フォルダ内のvendor/bundleに格納する
【エラー】An error occurred while installing mysql2 (0.5.2), and Bundler cannot continue
対処法
根本を直さなきゃいけないんだろけれども毎回参考にしています(自分の環境ではsudoをつけてもエラーが出ます)
RailsプロジェクトでMySQLがbundle installできなかった
bundle config --local build.mysql2 "--with-ldflags=-L/usr/local/opt/openssl/lib --with-cppflags=-I/usr/local/opt/openssl/include"
コマンドのみ解決
[補]rails new
???を「.」にすると現在のフォルダ、「todo」や「name」等の名前を付けると今の階層からひとつ下にフォルダが作られる
$ bundle exec rails new ??? -B
--skip-bundleオプションをつけないと、rails newコマンド実行時に、グローバルな場所に、関連gemがインストールされる
-d mysql
mysqlにデータベースを変更(railsのデフォルトのDBはsqlite3)
ーB, --skip-bundle
システムにbundle installを行わないようにする
config/database
passwordを設定
今作ったフォルダの中にある
config/database.yml
の17行目にデーターベースの(Mysqlとかの)パスワードを入れる(エラーが出るようなら空白のままで良い)
password: ぱすわーど
#(半角スペース空けないとエラー)
【エラー】Access denied for user 'root'@'localhost' (using password: YES)
Created database 'にゃまえ_development'
Created database 'にゃまえ_test'
上のような二行ではなく(using password: YES)と出たら先のdatabase.ymlで設定したpasswordをまっさらに戻して保存してもう一度createすれば通るはず
password: (消す)
rails db:create
[補]gemがない
bundle install --path vendor/bundle
データベースを作成します。rails == rakeらしいです
$ rails db:create
これでbundle exec rails s
をするとブラウザでYay! You’re on Rails!と表示されるはずです!!!
rails g model
$ rails g model モデル名 フィールド:型
$ rails g model User name:string
「モデル名」の一文字目は大文字で単数形として書く
t.string :name #コマンドで作成した時に作ったもの
t.integer :age #同じ書き方でここに書き込める
rails db:migrate
モデルの変更を確定するため
$ rails db:migrate
[補]Mysql2::Error: Table 'テーブル名' already exists
mysqlを直接編集する方法が載っています
[Mysql2::Error: Table 'テーブル名' already existsと表示されてしまった時の対処法]
(https://bokunonikki.net/post/2018/0214_rails_mysql_error/)
[補]bundle exec rails db:rollback
モデルの変更を戻す
# 一つ前のテーブルをmaigrate前に戻す
$ bundle exec rails db:rollback
# 複数のテーブルを戻す
$ bundle exec rails db:rollback STEP=数
[リファレンス rake db:rollback]
(http://railsdoc.com/references/rake%20db:rollback)
bundle exec rails g controller
コントローラーとビューを作成
「コントローラー名」は複数形で、頭文字は大文字(例:User, Post, Monster)
newアクションを持つUsersコントローラーを作るときは次のように入力します
一例
$ rails g controller Users new
この場合は下記の二つは自動で記述される
def new
end
get 'users/new'
bundle exec rails s
ブラウザを起動する
$ bundle exec rails s
get "/" => "users#new"
とすると「localhost:3000」で自動生成のuserコントローラーのnewアクションでページが表示される
【エラー】A server is already running.
このエラーが出た場合は/tmp/pids/server.pid.
ファイルを消す
手動もしくは下記コマンド
$ rm tmp/pids/server.pid
.gitignore
git push
コマンドを打つ前に
.gitignoreの中で
vendor/bundle
と追加するとgit push
の時間が短くなる
参考にさせていただきました
[新規Railsプロジェクトの作成手順まとめ]
(https://qiita.com/yuitnnn/items/b45bba658d86eabdbb26)
[Railsのプロジェクトを新規作成する手順]
(http://hinathy.hatenablog.com/entry/2015/08/04/175627)
thank you にゃー
# なんどもなんども更新を続けています
うまくいかない場合や、おかしい記述があったら教えてください