8/19-Rails調べ
■index
- 資料をざっとみた印象
- zendesk
- rspecのlet!構文
- ログイン機能の実装
- rakefile
- .rst
- railtie
- api_only=true
- rubocops
- activesupport::concern
- robots.txt
- .rake
- jbuilder
■設計書を見た印象
管理者/一般
ログイン➡検索、登録、一覧、削除、設定変更、バリデーション、
といった一般的なWebアプリの構成
ダウンロードだけ処理分からないが、一般的だと思う。
持たせてるデータ内容(DB定義=ActiveRecord,DBのスキーマ)だけ。
railsで権限(ロールの付与)ってどうやって実装できるんだ?
➡application_policy
Userではなく、Usableなんだろ?
➡application_policy
Userではなく、Usableなんだろ?
sessionはzendeskかそれ以外かみたいな?
■zendesk
は企業用FAQサービスで、SSOでセッションを見るだけしている。■rspecでのlet(){}構文について
# インスタンス変数を使う場合
@user = User.new(name: 'Taro', email: 'taro@example.com')
# letを使う場合
let(:user) { User.new(name: 'Taro', email: 'taro@example.com') }
インスタンスの生成での違いで、実務上ははletを使う
■ログイン機能の実装
- Usersモデル(name/email/password_digest)
- ハッシュ化する処理(bcrypt)
- セッション管理の基盤作成(session controller)
- ルーティング
- view
■rakefile
設定ファイルに記述されている作業を上から順に実行してくれるもの。
特徴は下記の、
特徴は下記の、
- Rubyで記述ができる
- 言語内DSLを採用
- Rakefileというファイルに一連の処理を定義する
■.rst
- 元々は Python のソースコードに記述された pydoc コメントを整形するツールとして開発されました。
- 現在では Python ドキュメントに限らず、あらゆるドキュメント作成ツールとしても利用されています。
- reStructuredText という軽量マークアップ言語を使用します。拡張子は *.rst です。
→latexとかpdfとかのフォーマット用の拡張子である。
■railtie
railsアプリケーションの初期化プロセス段階で呼ばれるファイルたち
2.1 railties/lib/rails/all.rb
このファイルはRailsのすべてのフレームワークをrequireする役目を担当します。
require "rails" %w( active_record/railtie action_controller/railtie action_view/railtie action_mailer/railtie active_job/railtie action_cable/engine active_storage/engine rails/test_unit/railtie sprockets/railtie ).each do |railtie| begin require railtie rescue LoadError end end
ここでRailsのすべてのフレームワークが読み込まれ、アプリケーションから利用できるようになります。
■api_only = true
➡既存アプリをAPI専用に変更する目的
3.2 既存アプリケーションを変更する
既存のアプリケーションをAPI専用に変えるには、次の手順をお読みください。
config/application.rb
のApplication
クラス定義の冒頭に、次を追加します。config.api_only = true
developmentモードでのエラー発生時にレスポンスで使う形式を設定するには、
config/environments/development.rb
ファイルでconfig.debug_exception_response_format
を設定します。
値を
:default
にすると、HTMLページにデバッグ情報を表示します。■rubocops
RuboCopとは
Rubyの静的コード解析を実行するgemです。難しく聞こえますが、要はRuboCopが.rbファイルに記述してあるコードを検査し、ここのコードは長すぎるね。とか、インデント入れたほうがいいよ。とかメソッド名変えようか。とかをコマンド1つでターミナルに吐き出しててくれます。(HTML、CSS、またはそれらの中の埋め込みrubyは解析してくれません。)
■activesupport::concern
Railsにおいて共通した処理を切り出すために
ActiveSupport::Concern がよく使われています。
ActiveSupport::Concern がよく使われています。
robots.txtは、Googlebotを始めとしたクローラーに対して、特定のディレクトリやページへのクロールを制御するテキストファイルです。
robots.txtの用途は大きく分けて以下の2つあります。
(1) 特定のクローラーが指定したディレクトリ・URLにクロールしないようにする。
(2) クローラーにsitemap.xmlの場所を教えてクロールの促進をする。
上記の2つを行うことで、余計なページがクロールされるのを防ぎ、サイト内のクロール効率を向上させるのがrobots.txtを活用する目的です。
■.rake
rakeの実行ファイル、ansibleみたいに、タスクに分割してオペレーションをrubyで記述するファイル
■jbuilder
viewsファイルに含まれる。
Rails5 APIモードでJbuilderを使いたい時の追加設定〜APIサーバ構築〜
APIサーバon rails
describled_class
Rspecのモデル指定方法、相対的な指定
entity_class ruby
JPAを使用する場合,アプリケーションではデータの入れ物となるクラスを作成します。これをエンティティクラスといいます。通常,エンティティクラスを作成する際には,エンティティクラスの一つのオブジェクトがデータベースのテーブルの一行に対応するように作成します。エンティティクラスは,普通のJavaクラス(POJO)で作成します。特別なインタフェースをインプリメントする必要はありません。
ORMの概念体を指すのね。
describled_class
Rspecのモデル指定方法、相対的な指定
entity_class ruby
JPAを使用する場合,アプリケーションではデータの入れ物となるクラスを作成します。これをエンティティクラスといいます。通常,エンティティクラスを作成する際には,エンティティクラスの一つのオブジェクトがデータベースのテーブルの一行に対応するように作成します。エンティティクラスは,普通のJavaクラス(POJO)で作成します。特別なインタフェースをインプリメントする必要はありません。
ORMの概念体を指すのね。