14/08/05 01:03:45.06 52ECpDfa
小中学生にRuby教えて行ったらスレもこうなるっつうのはバカでもわかる
満足かね?
せめてRuby1年生は先生ごっこやめよ
249:デフォルトの名無しさん
14/08/05 10:33:07.90 xop66pug
>>243
それで生のCookieの値はどうなってたの?
250:デフォルトの名無しさん
14/08/05 16:52:55.87 n5rHoHG6
>>249
生のcookieの値というのはfirefoxの「prefenances」>「history」>「show cookie」からcookieを見た時にHostとかPathとかいくつか項目があるところのContentってところに書いてる値をそのまま書けばいいのでしょうか?
あと、他のサイトのcookieはどんな感じになってるのかと思い見てみたところHostという項目がない代わりにDomainがあるサイトがあります。
HostとDomainが両方ともあるというサイトは見かけなかったのですがこれらの違いは何なのでしょうか?
僕のサイトだとHostでした
251:デフォルトの名無しさん
14/08/05 17:14:48.30 9+BWU5QF
>>250
Contentとは別に有効期限ってのがないかな?その値はどうなってるのか。
その値が正しければruby(rack)というよりブラウザ側の問題では?
ブラウザのcookie保存期間の設定は正しく設定されていないとか?
252:デフォルトの名無しさん
14/08/05 18:13:26.87 n5rHoHG6
>>251
expiresの値は2014年09月04日 16時40分35秒になってます。
コードでも一ヶ月後に設定してたので多分有効期限の設定はうまく行ってると思います。
うまく行かない時もcookie自体は残っているので削除されてるって線は薄そうです。
とりあえず、firefoxでやってたので他のブラウザでも試してみます。
現状なんでうまく行かないのかもわからない状態なので…
253:デフォルトの名無しさん
14/08/05 18:45:34.68 9+BWU5QF
>>252
あら、cookie残ってるのね。
他のブラウザでも同様であればコード側に原因があるかも。
>>243にある参考ページのサンプルコードがシンプルだから、
そのコードで動作確認してみては?
254:デフォルトの名無しさん
14/08/06 04:13:53.68 /o/64fuk
use Rack::Session::Cookie,
:key => 'rack.session',
:domain => '.の後にdomain',
:path => '/',
:expire_after => 2592000,
:secret => '適当な文字列'
これでやったのですがうまく行きませんでした。
逆にうまく行く時はなんでうまく行くのかと思いキャッシュ消したりとかもやってみたんですが関係無いようでキャッシュを消してもcookieを読み込める時は読み込めて読み込めない時は読み込めないようです。
herokuで動かしてるのですがもしかしたらherokuの設定がうまく行ってないみたいな可能性とかはありませんか?
###### WARNING:
No Procfile detected, using the default web server (webrick)
警告出てたんですが問題なさそうだったので無視してましたし
config.ruにuse Rack::Session::Cookieを書いてるサイトもあったので僕の勝手な憶測ですが
現在のconfig.ruの中身
require './app'
run Sinatra::Application
原因自体つかめていない状態なのでそれを特定する方法の手がかりだけでも知りたいです
255:デフォルトの名無しさん
14/08/06 04:17:39.98 /o/64fuk
警告は
この内容のProcfileを追加したら消えました。
web: bundle exec rackup config.ru -p $PORT
256:デフォルトの名無しさん
14/08/06 07:07:48.40 9mmp63by
Firefoxにクッキーマネージャとか入れて確認してみるのがいいと思うな
257:デフォルトの名無しさん
14/08/06 07:50:16.81 im7I2Tzq
> 原因自体つかめていない状態なのでそれを特定する方法の手がかりだけでも知りたいです
herokuとかの環境の情報は始めから出した方が良いと思うよ。
あとローカル開発環境では正しい動作だったのかとか。
問題の切り分けがしづらくて遠回りしてしまう。
herokuでは「use Rack::Session::Cookie」と
「enable :sessions」を同時につかうなみたいな記事あったけど
そのあたりは大丈夫?
258:デフォルトの名無しさん
14/08/06 12:44:14.10 /o/64fuk
>>257
すいません。
環境等先に書いておくべきでした。
えーっと
ブラウザで動くsinatraアプリでweb apiをoauth認証をして使ってtumblr用のサイトを作っているのですがローカルだとあらかじめ入手しておいた自分用のアカウントのキーを定数でおいています。
なのでローカルだと連携アプリを許可するみたいなページを出してoauth認証させる部分を省いて開発しています。
oauth認証の過程がないのでcookieの処理もローカルのものには有りません。
herokuにあげたものがうまく動かないのはcookie周りの処理だけで他はoauth認証とcookieの処理がないローカル版と僕が見たところ同じ動きをしてると思います。
oauth認証の情報が保存されないだけでアカウントがどうこうということはないですけど、こんな状態なのでanalyticsで自分以外の人が来てないと確認しながらやっているのですがanalyticsが残すcookieはうまく動作してそうな感じです。
herokuは無料プランで、アドオンなどは入れていません。
enable :sessionsは大丈夫だと思います
259:デフォルトの名無しさん
14/08/06 18:33:58.71 vbe86AaJ
>>258
読み込める時と読み込めない時があるようなので
oauth認証のタイムアウトとか考えられるけど
herokuはログにエラーは出すのかね。
260:173
14/08/06 22:43:28.11 9w14YIgy
>>180
>>188 では、ナゼ可視性(=protected や private の宣言)を使わない
スタイルを好む(個人的な)理由を書いた
その理由の中では:
> スーパクラス-サブクラス間でメソッドを介して関連し、なおかつ
> そのメソッドの外部からの利用を(protectedで)禁止するのが
> 望ましいというケースがほとんど無い(ちょっと思いつかない)
などと書いていたけど、それが間違いだったことに気付いた
ここ数日、標準ライブラリの Ripper.lex を使って、Ruby の
ソースコード解析ツールでの利用を想定した字句解析コードを書いていたのだけど、
試しに protected と private を使ってみたところ割とイイ感じになった
どうやら可視性に関しては、自分の食わず嫌いだったらしい....
URLリンク(play.island.ac)
他人から指摘されるまで気付かなかった自分が恥ずかしいけど、
まずは指摘してくれたことに対して礼を言う、ありがとん
261:211
14/08/07 00:41:38.32 QaqdPvt4
>>209-216
IO(入出力)クラスによると、
Windowsで改行、\r\nを読み込むと、
Rubyインタプリタ内で、\nに変換されて、
またWindowsに出力される時に、\r\nに変換される
つまりRuby内では、\nで統一されている
262:デフォルトの名無しさん
14/08/07 01:54:36.56 UzLKIx83
¥r¥nが¥nで統一されてるとして
¥rはどして¥nに統一されてないのん?
263:デフォルトの名無しさん
14/08/07 02:34:40.65 EqoC26iF
そもそもCRLFとLFの変換ってのは元はWindows(と言うかその前身のMS-DOS)の仕様だからなあ
Unixにはそんな仕様は無い
そして、DOSにそれをする必要があったのは自身の改行がCRLFで
C言語はUnix生まれのため改行がLFだったこと
これをMSは、オープン時にテキストモードかバイナリモードかを指定させ
テキストモードならCRLFとLFを変換する、とした
どちらもCRのみ(これは昔のMacの作法)とは関係がないので何もされない
264:デフォルトの名無しさん
14/08/07 03:05:13.96 Os4j55OX
FTPにもテキストモードとバイナリーモードがあるしな
265:デフォルトの名無しさん
14/08/07 04:51:50.32 mGC1aKkA
>>256
クッキーマネージャーはアドオン名でしょうか?
使いかたは自分で調べるのでどの項目や何を見ればいいのかがわからないので良ければ教えてくださいますか?
>>259
500番エラーが出てます
dashboardは投稿一覧みたいのを表示するページでこれは失敗した時のログです。
***は伏せ字です
2014-08-06T19:20:03.092865+00:00 heroku[router]: at=info method=GET path="/dashboard" host=*** request_id=62a8b28e-c1a0-4667-9127-988f2de7f579 fwd=*** dyno=web.1 connect=2ms service=181ms status=500 bytes=1235
うまく行ったときは200番がちゃんと帰ってきてます。
そこで、試しにoauthの情報を定数でおいているローカルの方のファイルをoauthの情報を書かずに実行すると似たようなエラーが帰ってきて
NoMethodError - undefined method `[]' for nil:NilClass:
となりました
heroku logsにも似たようなものが出てたのでやはりうまいことcookeから情報が読めてないのではという気がします
2014-08-06T19:20:03.077945+00:00 app[web.1]: NoMethodError - undefined method `[]' for nil:NilClass:
案の定クッキーはfirefoxから確認できたので何が理由かはわかりませんが何らかの理由で時間が経つとcookieから情報が読めなくなるみたいです。
266:デフォルトの名無しさん
14/08/07 05:14:08.90 mGC1aKkA
あれ?
operaからも動作確認しようと思ってサイト開いたらどうもfirefoxとログインアカウントの情報が共有されてるみたいです。
firefoxからしかoauth認証(アカウントAで認証)してないのにoperaでも同じアカウント(アカウントAの情報)の情報で出てくる。
逆にoperaから別のアカウント(アカウントB)を認証してfirefoxで開いた時もfirefoxから許可してないのに別のアカウント(アカウントB)の情報で出てくる。
同一LAN上のタブレットから開いてもそうなりました。
意味がわからない…
267:デフォルトの名無しさん
14/08/07 05:22:45.89 mGC1aKkA
>>266
すいません取り乱しました
そもそも、これがセッションの正しい挙動だったんですね。
sinatraがデフォルトでセッションをクッキーに保存しているというだけで別にセッションはクッキーを使うためのものではないって解釈でいいんですかね?
268:デフォルトの名無しさん
14/08/07 11:27:41.97 qMfbyumE
>>265
cookieが読み込めないというより
500が帰ってきているから結果的にcookieが読み込めていないってことだよね。
firefoxでcookieが見れるというのは前回成功した時のcookieが見えているだけじゃないかな。