Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature/feature/01 login logout #1

Merged
merged 7 commits into from Aug 16, 2021

Conversation

KTomoya-arch
Copy link
Owner

実施内容

・ログイン機能を実装する
・generateコマンド時に生成されるファイルを制限する
・ルーティング、JS、CSS、テストが自動生成されないようにする
・タイムゾーンの設定

【その他の初期設定】
・git-flowをhomebrewで導入しGitフローでの開発フローとする
・Rubyのバージョンは2.6.4とする
・Railsのバージョンは5.2.3とする
・DBはMySQLとする(SQLiteへ変更)
・turbolinkとcoffee-scriptは使わない
・rubocopを導入してLintチェックを行う
・slim-railsを導入してビューテンプレートはslimを使う
・sorceryを導入
・better_errors, binding_of_caller, pry-byebug, pry-railsを導入
・redis-railsを導入してセッションの管理方法をクッキーストアではなくredisにする
・rails-18nを導入して国際化に対応する
・bootstrap material designを導入
・annotateを導入

復習ポイント

コマンドをターミナルで打つだけで色々と環境を整えてくれてしまうRailsなので、今回は一つ一つコマンドが何をやっているのかという点も含めて復習ポイントにした。正直この辺りが理解できていないのが個人的には気持ち悪かったため。

  • bundle init
    作業中のディレクトリに、Gemfileを召喚する。
  • bundle install
    Gemfileに記載されたGemfileをインストールする。
  • Gemfile
    Railsアプリで利用するgemの一覧を管理するファイル、ライブラリ。redis、slimなどなどRailsに標準搭載されていないが使用したいgemがある場合はとにかくここにgem 'gem名'と書いてbundle installすればいいような感じか。VisualStudioでいうところのnugetで取ってくる参照みたいなもの。
  • bundler
    導入しようとしているgem同士の間の依存関係やバージョンを管理するgem。bundlerを使用することで依存関係にあるようなgemがあったとしてもそれを意識せずに勝手に一括でインストールしてくれる。(最強)
  • --path vendor/bundle
    https://qiita.com/jnchito/items/99b1dbea1767a5095d85
    このオプションを付けないと、システム全体にgemがインストールされる。
    上記ページに記載があるように記載する理由は色々あるがつけた方が問題が発生する可能性は低くなるとは言えそう。
  • git flowとは
    Gitのブランチを使用した開発手法の1つ。複数名による開発のコンフリクトやマージミスなどを回避するために使用する。feature,develop,release,master,hot-fixブランチのように分け、各ブランチごとに役割・目的が明確になっている。インスタクローンはリリースしないのでfeature,develop,masterがあり、各機能(01〜18)作成してはdevelopブランチへプルリク・マージする感じか。
  • turbolinkとは
    仕組みはいまいち理解できていないがこの仕組みによってjQueryのreadyイベントやWindowのloadイベントの発生を邪魔してしまうよう。HTMLをロードしたときに起こるはずのイベント等々が阻害されてしまうくらいのイメージで。
  • slim
    ビューテンプレート。閉じタグがないのでスタイリッシュなhtmlを書くことができる。インデントによって親子関係を調整している。ただ慣れるのに少し時間がかかりそう。
  • sorcery
    ログイン機能を実装するためのgem。インストールすると、Userモデル・マイグレーションファイルなどが生成される。
    loginメソッド、logoutメソッド、logged_in?、redirect_back_or_toメソッド等をsorceryのcontroller.rbが有している。
    crypted_password(暗号化されたパスワード)があるのでsorceryにパスワードを暗号化してテーブルに表示しない仕組みがあるのだろう。
    この辺りも見えないのが・・・。
  • redis
    データの保存にメモリを使用するため高速である。有効期限のあるセッションを扱うのに適している。いまいちしっくりきていなかったので一応保存されているデータを確認。インスタクローンにログインしたのち、ターミナルでredisサーバへアクセスして対象となる0のDBのkeysを確認。代替テキスト
  • annotate


    rails db:migrateを実行したタイミングでスキーマの情報をモデルに書き込んでくれる。個人的にはスキーマを見に行くのも面倒だったので非常にありがたい。アノテーションにはキーワードもあり、(TO DO,FIX ME, REVIE...)と確認観点が明確になる。またルーティングを書き込むこともできるよう。
  • rails-i18n
    アプリケーションのエラーメッセージなどをある言語から別の言語へ翻訳するための機能。
  • database.yml
    Railsにおけるデータベースの設定ファイル。デフォルトの設定ではSQLiteになっている。そもそもYAMLとは何かと思ったがYAMLというルールに従ったテキストファイルくらいの認識で良さそうで、そのファイルには.ymlがつく。自分の身近な例でいけば頻繁に使用する.xmlファイルに近いと思っておこう。SQLite以外のDBを使用する場合はrails newする際に -d オプションの後にDBを指定する必要あり。
  • migrationファイル/schema.rb
    データベースを生成するためのRubyで書かれたテーブル設計図のこと。DBに操作を行いたい場合は全てマイグレーションファイルを使用する。rails db:migrateコマンドによって作成したマイグレーションファイルが実行される。マイグレーションにはステータスがあり、実行済はup、そうでない場合はdownの状態を持つ。(rails db:migrateによってdownからupになり、upのものは変化しない。rails db:rollbackで最新のマイグレーションをupからdownにすることもできるし、複数のマイグレーションを指定することも可能。)schema.rbはテーブルの最新のレコードversionが記録されている。(今回はそれをmodelにannotateもしている。)
  • config/application.rbとは
    アプリケーション全体に関わる設定を記述するファイル。デフォルトのロケールやタイムゾーンの設定をここで書く。
    config.load_defaults 5.2
    config.time_zone = 'Tokyo'
    config.active_record.default_timezone = :local
    config.i18n.default_locale = :ja

i18nの設定もここでen.ymlからja.ymlの指定に変更している。

  • yarnとは
    Node.jsのパッケージ管理マネジャー。RailsにおけるBundlerと似たようなイメージ?とにかくこいつを使用すればJavaScript関連のものを色々管理できるといった感じだろうか。

@KTomoya-arch
Copy link
Owner Author

$ bundle init
$ Gemfile内の # rails部分のコメントアウトを外し、Railsのバージョンを課題で指定された通りにする。
$ bundle install --path vendor/bundle

Railsのversionを5.2.6でrubyのversionを3.00でbundle installしたところ、エラー発生し、bundle updateもうまくいかず。
instacloneのrubyを指定された2.6.4でbundle install,bundle updateした結果、うまく行った。バージョンが原因だったのだろうか。

@KTomoya-arch KTomoya-arch merged commit 135be49 into develop Aug 16, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

1 participant