6
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Rails技術者認定資格試験対策 ActionPack

Posted at

##ActionPackとは
ActionPackはRailsの中でもかなり広範囲にわたる機能を提供している部分の1つです。主な機能としてはジェネレータ、セッションなどで、フラッシュ、ActionViewやキャッシュ機能などもActionPackが提供しています。

##ジェネレータ
ActionPackが提供するジェネレータとしてcontrollerとscaffoldがあります。まずcontrollerのジェネレータコマンドとして、

rails g controller users

というコマンドを実行すると、

create app/controllers/user_controller.rb
invoke erb
create app/views/user
invoke test_unit
create test/controllers/user_controller_test.rb
invoke helper
create app/helpers/user_helper.rb
invoke test_unit
invoke assets
invoke coffee
create app/assets/javascripts/user.coffee
invoke scss
create app/assets/stylesheets/user.scss

というように大量のファイルが作成されます。もしこのコマンドを取り消したい時には、以下のコマンドを実行して下さい。

rails d(またはdestroy) controller users

続いてscaffoldの場合を見ていきましょう。scaffoldをジェネレータで作成するコマンドは以下になります。

rails g scaffold entries

こちらのコマンドを実行すると、

invoke active_record
create db/migrate/20190802064905_create_entries.rb
create app/models/entry.rb
invoke test_unit
create test/models/entry_test.rb
create test/fixtures/entries.yml
invoke resource_route
route resources :entries
invoke scaffold_controller
create app/controllers/entries_controller.rb
invoke erb
create app/views/entries
create app/views/entries/index.html.erb
create app/views/entries/edit.html.erb
create app/views/entries/show.html.erb
create app/views/entries/new.html.erb
create app/views/entries/_form.html.erb
invoke test_unit
create test/controllers/entries_controller_test.rb
create test/system/entries_test.rb
invoke helper
create app/helpers/entries_helper.rb
invoke test_unit
invoke jbuilder
create app/views/entries/index.json.jbuilder
create app/views/entries/show.json.jbuilder
create app/views/entries/_entry.json.jbuilder
invoke assets
invoke coffee
create app/assets/javascripts/entries.coffee
invoke scss
create app/assets/stylesheets/entries.scss
invoke scss
create app/assets/stylesheets/scaffolds.scss

controllerをジェネレートした場合より、さらに生成されるファイルが多いです。増えたファイルとしてはモデルファイルや ビューファイルがindex、edit、show、new、_formなど複数生成されていることです。今までなんとなく使っていたrailsのジェネレータコマンドですが元々はActionPackで定義された機能だったのです。

##セッション
セッションとはHTTPとは状態を保持できないステートレスですが、セッションを使うと状態を保持するステートフルに変更することが出来ます。主にログイン情報を保持したりすることにWebアプリケーションでは使われています。これにより、ログインしている状態であることを保持することが出来て、ログインを毎回全て行う手間から解放されます。

問題としてはセッションで情報を識別する際にセッションIDというものを使用するのですが、このセッションIDを第三者に盗まれてしまうと第三者が自分としてログインすることが可能になったり、セキュティ的には注意して実装する必要がある部分になります。

6
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?