読者です 読者をやめる 読者になる 読者になる

みんなのちからになりたい

コピペでブログラムつくっていきたい

sinatraの変数のスコープ

ruby

sinatraインスタンス変数いくら作ってもgetやpostに入るたびになぜかnilにされてどうなってんのかまったく理解できなかったけど、doc読んでやっと意味分かった。

やってくるリクエストごとに、あなたのアプリケーションクラスの新しいインスタンスが作成され、全てのハンドラブロックがそのスコープで実行されます。 このスコープの内側からは`request`や`session`オブジェクトにアクセスすることができ、`erb`や`haml`のような表示メソッドを呼び出すことができます。 リクエストスコープの内側からは、`settings`ヘルパによってアプリケーションスコープにアクセスすることができます。

ざっくり言うと、毎回インスタンスが作成されるから@hogeとか作っても消えるよもし残したいならsessionに入れるかconfigureでset :hoge, "hoge"とかしてsettings.hogeすれば使えるよってことか...
無知すぎていろんなところではまりすぎる。

web屋さんは常識なのかもしれないけどsessionってなんでもかんでも入れちゃってセキュリティ的に大丈夫なのかいまいちよくわからない。
例えばpostした結果を別のページで表示したいとき値をどうにかして引渡しないといけないけど、それをsessionに入れるのがいいのかそれともsetで予め生やしておいたメソッド経由で入れたほうがいいのかよくわからない。