睡眠中に夢だと気付いている時に起きるコツ

私は、睡眠障害を持っていまして現状では睡眠剤を飲まないと長時間の睡眠ができません。
眠剤を飲んでいたとしても夜しっかり寝ることができず、休みの日には昼寝をよくします。
そんな理由もあってしばしば浅い睡眠状態になり「あーこれ夢だなー。嫌な夢だから起きてしまいたいな。」と思うことがよくあります。

 

金縛りを解く方法っていろいろ聞くけど...

私は霊感みたいなものがなく、日常的に霊体験をする人間ではありません。
とはいえ、まったくそういうものを信じないわけではありませんが、実体験があまりにも乏しいので 金縛り = レム睡眠状態の脳が見せている幻想 という認識があります。

「金縛りを解く方法」としていくつか聞いたことがあります。
例えば、足の親指に力を入れるとか念仏を唱えるとか(念仏ってどんなものなのか知りませんが)。
ただ、こういった方法で夢だと認識している状態から起きられたことがありませんでした。

 

自律訓練法の中からヒントを得た

冒頭でも申し上げた通り、私は睡眠障害を持っていて、その原因には自律神経が大いに関係しています。
自律神経を整える方法として薬の投与もあるのですが、自己暗示的に訓練する方法として自律訓練法が有名です。自律神経に疾患を持っている人のためだけではなく、スポーツ選手のメンタルトレーニングなどにも取り入れられている訓練法です。

自律訓練法 - Wikipedia

Wikipediaでも紹介されていますし、検索すれば方法はいろいろとその方法は出てきます。

その中でもオススメなのがAmazonが提供しているオーディオブックサービスAudibleにある自律訓練法の書籍です。
Audibleは様々なジャンルの本やラジオコンテンツを専用アプリで聞き放題で利用できるものです。3倍速まで対応しているので、実際に読むのと同じスピードと同じくらの時間で本を消化することができます。
1カ月の無料体験があるので試しに申し込んでみてください。amazonプライムの会員だったら3ヶ月の無料体験ができます。

Audible (オーディブル) 会員登録 - 無料体験期間1カ月 

 

自律訓練法に関する書籍の中では以下がオススメです。メトロノームの音などを使って暗示に集中させる手法を使っていて、もはや催眠術です。

超催眠シリーズVol.09『自律訓練法~セルフメンタルコントロールメソッド~』 パンローリング株式会社 

すべて通して聞くには1時間くらい掛かりますが、序盤は自律訓練法の説明やその注意点を説明しているので、方法を理解したのであれば、2回目以降は目次から選んで途中から聞いていけるようになります。

起きるコツは深呼吸

自律訓練法の中で「喉や軌道が広がってとてもスムーズに呼吸ができる」という項目があります。
レム睡眠中には体を動かそうとしても動かすことができないのですが、この深呼吸を繰り返しているとだんだんと体が動くようになり眠りから覚めることできるようになりました。
そして眠りから覚めたら手の指をゆっくり握り、伸びをしましょう。これは自律訓練法の最後に行う動作です。

私はこれで起きたい時に起きることができるようになりました。
もし、嫌な夢を見ているという自覚がある時にはお試しください。その前に自律訓練法を一度やってみることをオススメします。

それとAudibleは名作小説やラノベや経済本、自己啓発本や語学本、さらには官能小説まであったりしますので是非お試しください。満員電車の中でも手ぶらで読書を楽しむことができます。

iPhoneにiOS9 public betaを入れたらバックアップから復元できなくなった話

こんにちわ。

そこそこ前からiOS9 public beta版が後悔され、誰でもいち早くiOS9を体験できました。
もちろんbeta版なので互換性のないアプリはたくさんあり、最近ではBeta版を入れていたことを後悔していました。

 

ここは思い切ってiOS8の正式版に戻してしまおうと思いやり方を調べたところこのようなページがあったので参考にやってみました。

「iOS 9」パブリックベータ版からiOS 8に戻す方法|携帯総合研究所

 

で、ここで嫌な予感はしていました。僕はBeta版を入れる時にバックアップを取っていなかったんです。公式にもインストール前にちゃんとバックアップを取りなさいという案内があったにも関わらず、iPhoneだけでインストールができちゃう手軽さから、バックアップを取らずにあげてしまったんです。
そしてBetaにあげてからは何度かバックアップを取っていました。

これがまずかった。。。

 

iPhoneリカバリーモードからiTunesにつなぎ復旧しようとすると
iphone ソフトウェア更新プログラムサーバーに接続できませんでした。不明なエラーが発生しました(1671)。」
というデータが表示されてしまい復旧できませんでした。

結局iOS8へのロールバックiPhoneを工場出荷時の状態に戻す → iOS8の最新版をインスコする → データを復旧する という流れだと思うので、別のマーシンでiOS8に戻してしまおうと思い、macにてiOS8の最新版に無事復旧できました。

 

さあ、あとはデータをiPhoneに戻すだけだと思い、元々iPhoneの母艦として使っていたwindowsにつないでデータを復旧してみる。

だがしかし、、

バックアップからデータを復旧しようとすると「このiPhoneのソフトウェアが古すぎるため復旧できません。」と表示されてしまい真っさらの状態から何も戻らなくなってしまいました。。。まいった。。。

iPhoneに入ってるiOSのバージョンが古いとiOS9で取ったバックアップのデータは入れることができないらしい。。

もう一度iPhoneの方でiOS9 betaを入れてからiTunesにつないで復旧してみるが、iPhoneをまっさらにした状態に戻すと今度はiOS8が入ってしまい、バックアップデータとは互換性がなくなってしまう。。。どうしよう。。。

んで最後にiPhoneじゃなくてPCのiTunesの方からpublic betaを落としてインストールしてみたらどうなんだろうと。
最初はそもそも更新プログラムにつながらないとかいうエラーで復旧できなかったわけだから自分で無理矢理拾ってきて入れてやると。
以下のページにやり方があったのでそれに沿ってやってみる。ファイルが2GBもあった。。。

【裏技】誰でもiOS9を無料でダウンロード!やり方を解説します。 | スクフェス超攻略

 

で、無事iOS 9 beta5がインスコできたところでiTunesにて「バックアップを復元」してみると、、、
なんか復旧してるっぽい!!できてる!!!わー!!!!!

 

というわけで無事データの普及ができました。
まじで怖かった。データ自体は残ってるのにiPhoneにも戻ってこないのかしらって。
でも今夜(20159/9)か明日にiOS9が発表されれ普通に直ったかもなぁなんてことも思いましたが、怖くて怖くて今朝の5時まで必死で藻掻いてました。

 

とにかく教訓としては、betaとか脱獄とかなんかそういうことする前にはバックアップをちゃんと取ってからやる!ってことでした。
マニアックな解決法の投稿になりましたが誰かのお役に立てるといいなぁ。だってどこ調べても解決法書いてないんだもん。

 

ではでは。

windows10へのアップデート通知を消す方法

Windows8系が大嫌いな僕は未だにメインのwinマシンは7です。
そんな僕のwin7マシンのタスクトレイにいつの間にか怪しいアイコンが表示されるようになりました。
こいつです。

f:id:yuruihito:20150603162954p:plain

こいつをクリックするとwindows10を予約するだの詳細を見るだの表示されます。
心なしか、windows updateが来ている時のような重さすら感じます。

 

しかも今のマシンとの互換性を調べるとディスプレイの表示がおかしくなるかもみたいなことが書いてあるので、そんなもん入れるわけねえだろという感じ。

 

が、このアイコンどうやっても消えません。
ずっとこっちを見ているようで怖いです。

 

なので調べたところ、以前のwindows updateで「KB3035583」っていうプログラムがインストールされたせいだとわかりさっそくアンインストールに向かいます。

 

コントロールパネル>プログラムのアンインストール で、
「インストールされた更新プログラムを表示」をクリックしてから右上の検索窓に「KB3035583」と入れると出てきます。

f:id:yuruihito:20150603163649p:plain

こいつをアンインストールして再起動すればタスクトレイのアイコンは消えます。

が、アンスコした途端、またこいつをインストールしろというwindows updateの通知が来るのでそれは頑張って防いでください。

 

以上になります。

Ruby on Rails チュートリアル やってみてる ~10章~

どうもです。
近頃すっかり暖かくなってきてしまい、クマムシの需要もなくなってしまいましたね。

今回は10章です。マイクロポストの実装。ツイッター的なやつですね。

この10章は今までもっともボリュームがあった気がしました。余裕を持って4,5日くらいかけて終わらせるつもりでもいいかもしれません。

で、この章でももちろんタイポとか抜けとかでテストでエラーが出まくったわけですが、進めていくうちにテストを実行する箇所が数箇所あります。
テストが全て通ったらその時点で一度pushしておいた方が良いでしょう。コードのボリュームも扱うファイルの量も多いので後半に来てからどこがおかしいのかわからなくなるととても辛いです。こまめにgithubにpushしておいてくださいね。

それでは10章のまとめいってみます。

 

 

10章の概要

第10章ユーザーのマイクロポスト

いわゆるTwitter的なマイクロソフトの実装です。
投稿にはユーザーのIDが紐付いていて、ユーザーを削除するとポストも削除されるという設計にちゃんとなってます。
昔の掲示板とか名前のところが空で投稿自体は残ってるってのがよくあったなぁ。。。オレンジのSNSで母校の同好会に書き込んだ僕の投稿誰か消してくれないかなぁ。。。

マイクロポスト機能ができるということでモデルも作っていきます。
一人の人が多くの投稿と紐付いているという複雑な構造になっているので、それをRailsではどう作っていくのかをテストを書きまくりながら実装していきます。

新しく投稿されたものが上から表示されていることもテストを書いて実装。
最大140文字までしか投稿できないというバリデーションなんかも実装。
homeやユーザー画面に投稿を表示させていったりします。

で、またRailsの超便利機能が登場。rakeでサンプル投稿を量産させていってしまいます。すげええ。

10章ではCSSやhtml.erbもめちゃくちゃ書きまくります。CSSとHTMLは学習済みなのでそこだけはコピペして内容はちゃんと理解するという自分ルールにしています。

サインインしていないと投稿できないようなアクセス制御を入れたりしてから、いよいよマイクロポストの投稿を実装していきます。

そして最後に投稿の削除機能を実装してこの章は終わりです。
この後に演習がありますが、はっきり言って僕だけの力ではどうしようもなかったので先人の知恵(githubで公開されている他の人のコード)を写経させていただきました。

といった感じでした。いやーすごいボリュームでした。

 

ハマったところ

今回も例外なくタイポしまくりました。diffを使ってどこが違うのか確認しましょう。自分がよく間違う単語や記号の傾向がわかってきます。まじで。

今回は前回までのようにどこが間違ってるんだかわかんないから章の始めの状態まで戻すということを恐れ、テストを回してオールグリーンになる度にpushしておりました。
が、その甲斐なく「あ、なんだよ、、ここタイポしてんじゃん。。」って程度のミスだけで済んだため、git cloneする機会はありませんでした。とほほ。

herokuで謎のエラー

この学習でのあるあるは、ちょっと間が空いてしまうとherokuに何かしらの問題が起こるというもの(笑)
今回もドキドキしながら git push heroku したんですがやっぱりいろいろエラーが起きまして、このシリーズでもいろいろ対処してきましたが、それでもどうにもならなくなったので、heroku createしちゃいました。つまり新しい環境をherokuに作っちゃいました。
それでpushするとすんなり通って何の問題もなくなったと。い、一応解決したとさせてください。
参考にしたのは以下の記事。以下の記事ではoriginの方を変更してるけど、僕らが変えるべきはherokuなのでご注意を。githubにpushされなくなっちゃいますので。

Gitで fatal: remote origin already exists. というメッセージが出る場合 - ponkiti's blog

 

演習

はっきり言って全然わからなかったので、カンニングしました。
写経しながらなるほどなぁ~と唸っていた感じです。よくわかりますね皆さん。。。

 

 

感想など

いやー、とにかく書いたコード量は過去最高じゃないでしょうか。
そのわりにどうにもならないようなエラーは出なかったですね。よかった。

 

次回の第11章でこのシリーズは終わってしまいますが、早くも次にやりたいことが決まりました。
Railsチュートリアルのどこかでも書いてあったと思ったのですが、rubyについては別途ちゃんと勉強しなくてはならないとのことでしたので、以下の本を進めて行こうと思っています。
クローラーが使えたら生活の中でもいろいろと便利になると思うんですよね。

というわけで次回は最終回。
また時間が空いてしまうかもしれませんが、ついに完走することができそうです。
第11章は「ユーザーをフォローする」です。またモデルの構築がありそうな感じですね。

ではまた。

Ruby on Rails チュートリアル やってみてるシリーズ:

はじめに

第1章 ゼロからデプロイまで

第2章デモアプリケーション

第3章ほぼ静的なページの作成

第4章 Rails風味のRuby

第5章レイアウトを作成する

第6章ユーザーのモデルを作成する

第7章ユーザー登録

第8章サインイン、サインアウト

第9章 ユーザーの更新・表示・削除

Ruby on Rails チュートリアル やってみてる ~9章~

お久しぶり過ぎます。
私生活でいろいろあったり、別の案件をやっていたり、体調を壊したり、やる気が出なかったりで時間が空いてしまいました。

今回は9章です。RoRチュートリアルもゴールがそこまで来てしまいました。
9章は登録したユーザーのデータを更新したり閲覧したり、また削除したりするという内容でした。

ボリュームもなかなかでした。時間的には3,4日くらいでしたか。
ただ内容は、アカウントを扱うサービスの中身が知れる感じなので結構面白い。なので4日くらい掛けてゆっくりやってみるとそんなに苦では無いかと思います。

あと、今回も謎のエラーが出まくったので、9章開始時点での状態をgithubにpushしておいてください
8章の記事githubのcommitの状態に戻して作業をやり直す手順を載せてますので、どうにもならなくなったらそちらを参考にやり直してみてください。

それではいってみましょう。

 

9章の概要

第9章 ユーザーの更新・表示・削除

タイトルの通りです。
前回まででユーザーの登録からサインイン、サインアウトまでを実装したので、今回はユーザーの情報を編集したり、閲覧したり、退会させてしまったりする機能の実装でした。

この章では個人情報を扱ったり、データを操作する機能を扱うため、それぞれの機能をセキュアに実装していっています。そのため少し手間だなと感じるかもしれません。

編集ではプロフィール画像の編集もありますが、こちらはGravatarというサービスにあやかっています。便利ですね。
編集するフォームには既に登録してある情報が入力されている状態になっていて、これはRailsの機能だそうです。これまた便利ですね。

 

ユーザー登録時と同じように編集時にもバリデーションによって不適切な内容の場合は失敗させる必要があります。エラーメッセージの表示も含めてテストを書いて実装していきます。

 

編集失敗の実装が終わったら、編集の成功を実装していきます。
CRUDでいうと作成がCreateですが、編集はUpdateですね。編集の実装は作成の時のコードとほぼ同じ内容の箇所もありました。
自分自身の情報を更新するためにはその都度パスワードを入力する必要があります。プロフィール編集画面を開いたまま離席した人の情報を他人がこっそり変更してしまうといったことを防ぐことができますね。

 

自分自身の情報を変更することができるのは当然ですが、他人が自分の情報を変更できてしまうのはまずいですよね。
そのため、サインインを必ずさせ、サインインしているユーザー以外のページにアクセスした場合にはサインイン画面にリダイレクトさせるという機能を実装します。

 

また、ここで始めて聴く言葉が出てきました。「フレンドリーフォワーディング」です。
アクセス権の無いページに行こうとした際に問答無用にどこかへリダイレクトさせるのではなく、一度サインインページに遷移させ、アクセスできるID/PASSを入力すれば行こうとしていたページを表示させてあげるという機能です。
こういう設計になっているサービスはよく見ていましたが、それに名前が付いていたのだなぁと関心してしまいました。

 

そして全てのユーザーを一覧で表示させる機能を実装します。
せっかく一覧表示できる機能を実装したのに、登録しているユーザーが少ないと寂しい見た目になってしまうので、Faker gemというものを使って、それっぽい名前とメールアドレスをランダムで登録させていきます。便利ですね。
更にその一覧画面がとても縦長になってしまうのでページングを実装するのですが、これもRailsの持つ機能を使って簡単に実装することができます。すげえよRails。。。

 

ユーザーの更新、一覧表示を実装したら今度は削除させる機能の実装です。RESTで唯一使っていなかったdestroyですね。
ただし、全てのユーザーが他人を削除できてしまうとそのサービスはめちゃくちゃになってしまいます。そのため、管理者というスーパーユーザーを作り、その管理者だけがユーザーの削除を行うことができるようにします。管理者のみに「削除」リンクを表示させるようにし、他のユーザーには表示させないように実装します。
また、演習では管理者自身が自分を削除できないようにします。管理者がいなくなったらそのシステムでユーザーを削除できる人がいなくなってしまいますよね。そのためでしょう。

 

といった内容でした。ボリュームがありそうですが、興味深いんじゃないでしょうか。

 

ハマったところ

今回もハマりました。ハマりまくりました。何度もgit cloneで環境を作り直しました
この演習を始める前に是非僕のハマったところに目を通していただければと・・・。

 

9,1,2 と リスト9.19 でテストが通らなくなる

9,1,2 と リスト9.19 でなぜかテストが通らなくなります。書いてある通りにやってるのに。なぜか通りません。
原因は8章で"form_tag"の際にsession_controler に"[:session]"を追加したためでした。これを消せば通るようになりました。解決。

参考:

RSPEC erros on Chapter 9 of Ruby Tutorial - Stack Overflow

Rails研修(9月2日).md 

 

herokuへのpushでエラーが起きるようになった

8章でもherokuで謎のエラーが出るようになって困ったんだけど、今回は別のエラーが出た。

Permission denied (publickey).
fatal: The remote end hung up unexpectedly

で、調べたところ以下を試したら解決。

参考:

 id_rsaのパスワードを入力してください。 - Re:Start

 

更にherokuで謎のWARNINGが出る。

WARNING: Destructive Action
! This command will affect the app: [サービス名]
! To proceed, type "[サービス名]" or re-run this command with --confirm [サービス名]

 以下の「バックアップからリストア」を試したら解決。

参考:

 Heroku データベースの管理 - 君の瞳はまるでルビー - Ruby 関連まとめサイト

 

演習

まず、この章の演習の状態を残していると10章でエラーが出るようです。

参考:

Railsチュートリアル第9章の演習を先にやると第10章で詰まった - ネット偽善者でもいいじゃない

演習に入る前にちゃんとgitであれこれしておいてくださいね。
そして演習が終わったら上記の箇所は元に戻しておきましょう。

 

演習6は、users controller.rbにサインインしている場合にはルートにリダイレクトするというif文を追加します。後は調べて自分でやってみてくださいね。

演習7は、7.1を参考にviewのファイルの一つに request.url などのリクエストメソッドを挿入してブラウザで確認すれば良いのではと。 <%= request.url %>の場合はURLが表示されます。

他の箇所でわからないところがあれば過去にRailsチュートリアルを行った人のソースがゴロゴロ転がってるので探してみてくださいね。

 

感想など

今回もタイポに泣かされました。。
どこが間違ってるかわからないという時はgithubなどで過去にRailsチュートリアルを終わらせている方のソースと自分のソースをdiffってみるといいですよ。以下はWEB上でdiffができるやーつ。

Mergely - Diff online, merge documents

実は演習までは1ヶ月以上前に終わっていたんですが、本当にいろいろあってこんなに間が空いてしまいました。。挫折したんじゃねーの?なんて思われてたら申し訳ないです。

しかし、残り2章で終わりですので、自分のペースで必ず完走し、次の段階に進もうと思います。

RoRチュートリアルの中の人であるID:yasulabsさんにチュートリアルを完走し終えた後にどうすれば良いかという質問をしたところ以下のように助言をいただきました。

実践的な力を身につけたいのであれば、やはり何か作ってみたいウェブサービスを考えて (アイデアがなければ何かのサービスのコピーでも良いと思うので) それを練習として作ってみるのが一番よいかなと思います。実践するための考え方や技術はチュートリアルで身に付いているはずなので、あとは実践してみるのが一番ですね :)

他の読者の方が制作したウェブサービスは下記URLにまとめているので、参考にしてみてください。

http://b.hatena.ne.jp/yasulabs/%E6%88%90%E6%9E%9C%E7%89%A9/

ただし、実装を進めていくにつれて、RailsチュートリアルRailsガイドの内容だけでは分からないこともあると思うので、そういった場合にはウェブ上の記事や紙の書籍などを読み込む必要があるかなと思います。

それと、Ruby/Railsに関するコミュニティが至る所にあるので、そういったコミュニティに顔を出してみても面白いかもしれませんね :)

地域Rubyの会
https://github.com/ruby-no-kai/official/wiki/RegionalRubyistMeetUp

誰かと進捗を共有しながら作っていくとモチベーションも途切れにくいので、オススメです :D

 yasulabsさん本当にありがとうございます。

僕的には以前から興味を持っていたクローラーの開発を行ってみたいと考えています。まだほとんど写経しかできない状態ですので、初心者向けのWEBサイト、または本などを参考にやっていきたいと思っています。

以下は読んでみようと思っています。

 

はい、というわけでこのシリーズも残り2回。
第10章は「ユーザーのマイクロポスト」だそうです。掲示板的なやつを作っていくんでしょうか。
ではまた。あまり時間が開かないように気をつけます。

 

ゴーゴーナナニーサンニーレー

www.youtube.com

 

Ruby on Rails チュートリアル やってみてるシリーズ:

はじめに

第1章 ゼロからデプロイまで

第2章デモアプリケーション

第3章ほぼ静的なページの作成

第4章 Rails風味のRuby

第5章レイアウトを作成する

第6章ユーザーのモデルを作成する

第7章ユーザー登録

第8章サインイン、サインアウト

Ruby on Rails チュートリアル やってみてる ~8章~

どうも。
体調を壊してしまい前回から少し間が空いてしまいました。

今回は8章です。前回はユーザーを登録してそのユーザーの情報を表示させるところまでを作りました。

8章ではその登録したユーザーでのサインイン、更にサインアウトを主な内容としています。

結果から言うとこの8章は今までで一番時間がかかりました。4日間くらいでしょうか。それはこの章の難易度というよりは、謎のエラーによるものでした。これから8章に入る方はこまめにブランチを切ったりpushしたりしておいた方がいいっす。

今回の記事ではgithubからローカルにcloneしてもう一度同じ状態に戻す手順も紹介します。だって泣きそうになりながらめっちゃ調べて何とか直ったんだもん(ToT)Gitもっと上手く使えるようになりたい!!9章入る前にGitの勉強しようかなと思う。

前置きが長くなりましたが、8章のまとめいってもいいかな?

f:id:yuruihito:20150224105933j:plain

 

8章の概要

第8章 サインイン、サインアウト

タイトルの通り登録したユーザーをサインインおよびサインアウトさせる機能を実装していきます。

認証の周りなのでかなり複雑なんじゃないかと思っていたのですが、そういえば前回まででセキュアな状態でのユーザー情報の登録の準備はできていたので、認証に関してはそこまで難しいところはありませんでした。

セッション情報をcookieに保持してサインイン状態を維持するというあたりと、それを開放してサインアウトするというところでしょうか。

それとサインインしているユーザーとサインアウト状態のユーザーで出ているものが違うよね?というテストを書いたりしたと思います。

サインイン画面を実装していき、認証に失敗すればエラーをメッセージが表示されますが、ここにもユーザー登録画面と同様にエラーが表示されているというテストを書いていきます。

サインイン機能としてはフォームを作った後に実装するのはサインイン成功ではなく、サインイン失敗になります。作者が意図していることかはわかりませんが、この順番、いいですよね。サインインができることよりもサインインがちゃんと失敗するってことの方がユーザー情報を扱うシステムでは重要です。

で、サインインしたらcurrent_userという変数を引っ張ってサインインしているユーザーとしてのサイト内での振る舞いや、ブラウザを一旦落とした後もまたサインイン状態が残っていることを確認したりします。このトークンは20年後まで保存されるそうなのですが、それが本当に20年後に期限が切れるテストは書かれていませんでした。これはRailsの機能なので任せようということなのでしょう。

ヘッダーのレイアウトにはif文を使ってサインイン状態によってメニューを出し分ける条件を追加します。サインアウト状態なのにSign outリンクが出ているのはおかしいですよね。

僕が好きなBootstrapを使ってアカウントメニューがドロップダウンで表示されるようになります。かっこいい。

また、ユーザー登録が完了した後にはサインイン画面を出さずにそのままサインイン状態の画面を表示し、ウェルカムメッセージでお祝いしてくれます。

そしてサインアウト機能を実装してほぼ終わりです。

最後にはCucumberでのテストの仕方がありますが、ここは飛ばしても良いと言われています。ですが、ここを飛ばしちゃうと演習がさっぱりわからないと思うので一応サラッとやってみてください。写経するだけなんで。

 

ハマったところ

8.1.1 Sessionコントローラのテストでpending

サインインページの実装のとこのテストで、レイアウトとかルーティングとかコントローラーとか追加した時にテストがパスするはずなのに以下の表示。

Pending:
SessionsHelper add some examples to (or delete)

 って出るけど、別の箇所のことなのでここでは無視した。その後通るようになったし大丈夫だと思う。

 

何をしてもエラーが出て進まなくなったのでgithubからcloneした

途中からテストでエラーが出るようになり、手を加えれば加えるほど新たなエラーが出たのでgitで8章の最初のコードに戻そうと思ったんだけど調べてやってもどうもうまくいかない。。
以前仕事でコードをgithubからローカル環境にcloneしたことがあるのを思い出して試してみた。
結果から言うとちゃんと8章の最初の環境にできたんだけど、そこに至るまでが相当大変だったので、cloneしてから再度実装に入れる状態になるまでを簡単にまとめようと思う。自分のためにも。。。。

1. githubで戻したいcommitのリポジトリのページからclone URLをコピー

GitHubにあるリポジトリをローカルにcloneする方法 - Qiita

↑を参考にコピーする。

2. 古いsample_appフォルダをゴミ箱に移動

消さないと既にあるって言われてcloneできないから。

3. プロジェクトのディレクトリに移動してclone

cd でsample_appフォルダが置いてあったディレクトリに移動して以下を実行する。

git clone コピーしたcloneURL

 4. cloneしたフォルダに移動してgemをインストールする

普通にbundle installするとなんか怒られるので以下を実行する。

bundle install --without production

その後bundle installしても怒られなくなるのでbundle installする。

5. migrationする

この段階でbundle exec rspec spec/すると以下のエラーが出る。

Migrations are pending; run 'bin/rake db:migrate RAILS_ENV=test' to resolve this issue. (ActiveRecord::PendingMigrationError)

なので以下を実行。

rake db:migrate RAILS_ENV=test

 これでもう一回テストしてみるとちゃんとテストが回ったー!いえーい!

このままでは開発環境が見れないので、

rake db:migrate RAILS_ENV=development

これでだいたいOKなはず。足りないところがあったらコメントよろしくお願いします。。 

 

6. 8章を最初からやり直す

・・・・・・・。

 

git push herokuで謎のエラー

8章の最後にいつものように本番環境に反映させるわけですが、git push herokuすると以下のエラー。

fatal: 'heroku' does not appear to be a git repository
fatal: Could not read from remote repository.

なにこれ。。。翻訳してみよう。

決定的:'heroku'はgit宝庫であるようではない
決定的:リモートの宝庫から読むことができなかった。

意味わかんねえ。。。

いろいろ調べてグチャグチャやってみたけど全然治らないっていうか他のエラーがジャンジャン出てくる。。2時間くらい彷徨ってたかも。。。
で、herokuにpushした直前の”Finish sign in”に戻してから以下を試すと解決した。

git remote add heroku git@heroku.com:【herokuのプロジェクト名】.git

この後に heroku open してもエラー表示されるからね。マイグレーションしてね。

heroku run rake db:migrate

 参考:
http://d.hatena.ne.jp/s-0samu/20110416

 

正解のコードの全文がなくて入れ子の関係とかが不安になってくる

この章をやっていると1ファイルに書くコードが多くなってくるため既に書いてあるコードは「・・・」みたいに省略されて表示されている。
どこが追加されたところなのかがわかりやすくはなってるんだけど、章の最後まで行った時に、じゃあそのファイルは結局どういうコードになっているのが正解なのか知りたくなっても全文は記載されていないので不安になってきます。
こういう感じで。

f:id:yuruihito:20150224131308p:plain

こうなったらね、もうね、勘が良い人ならわかるでしょうけど、githubで8章の完了時点のコミット名である「Finish sign in」のリポジトリを探せばいいんすよ・・・。いっぱいありますよそりゃ。

というわけで不安になったらgithubで先に完了してくれてる人のコードを見せてもらいましょう。

参考:
Finish sign in · ad21351 · imaginaryset/sample_app · GitHub

 

演習

演習1はいきなりform_tagにしろって言われても今まで使ったことないんだからわかるわけがなかった。
なのでググって正解を見ながら写経しました。すいませんでした。

参考:

Railsチュートリアル 4.0版の演習について、自分なりの解答をまとめてみた - メモ的な思考的な

演習2に関してもさっぱりわからなかった。githubに演習2のコードのビフォーアフターがあったので写経させてもらった。すいませんでした。
でも答えのコードを読むとやっと問題の意味がわかってきた。この章の演習はちょっとヒントが少なすぎた僕には。

参考:

8.5.2-after · cb38e3e · thinkAmi/rails_tutorial-syakyo · GitHub

 

感想など

というわけで演習はザッツカンニングでした。
とにかくゲームセンターCXでいうところの”戻し作業”と急に出たherokuのエラーに泣かされました。
同じようにハマった人には早く僕の記事にたどり着くことを祈るばかりです。

かなり苦労した8章でしたが、内容自体はとても楽しいものでした。

 

さて、話は少し変わりますが、前回のRoRチュートリアルシリーズの記事になんと中の人であるyasulab (id:yasulabs)さんからコメントをいただいてしまいました。僕が最初の記事で「神様ですか!?」と言った方からのコメントだったので正直驚きました。神様って本当にいるんですね。

yasulabさんからのコメントを引用しますと。

Railsの機能毎にまとめられた「Railsガイド」という大型リファレンスも最近制作したので、もしRailsの機能で詳しく知りたい機能などがありましたら、こちらからより深く学べるかなと思います :D

Railsガイド
http://railsguides.jp/

RailsガイドはRailsチュートリアルの2倍ぐらいの量があるので(チュートリアルが約700pでガイドが約1300~1400p)、チュートリアルの参考書みたいな感じで使うのがよいかなと思います :D

とのことです。
まだ作成途中の項もあるようですが、私のような学びたいけどどうしていいかわからない人間のためにもyasulabさんはまとめてくださっているのです。

皆さんもRailsガイドを参考にしてみましょう。
yasulabさんご丁寧にコメントありがとうございました。俄然モチベーションが上がりましたので必ずRoRチュートリアル完走します。

 

さあ、次は9章。「ユーザーの更新・表示・削除」だそうです。
表の画面からユーザーの情報を変更したり削除できるようにするのでしょうか。
DBな感じがするので少し難しそうですが気楽にやってみようと思います。
その前にGitをちょっと勉強しよ。。。

ではでは。花粉症に負けないでください。

 

Ruby on Rails チュートリアル やってみてるシリーズ:

はじめに

第1章 ゼロからデプロイまで

第2章デモアプリケーション

第3章ほぼ静的なページの作成

第4章 Rails風味のRuby

第5章レイアウトを作成する

第6章ユーザーのモデルを作成する

第7章ユーザー登録

第8章サインイン、サインアウト

 

juice=juiceいいわぁ。ハロプロで初めて好きになったかも。

【限定1年】OneDriveの容量が100GB増えるキャンペーン

microsoftが提供してるOneDriveがDropboxユーザー向けに「うちのも使ってみてくださいよ~」というキャンペーンをやってます。

DropboxにOneDriveの素晴らしさが書かれているpdfを保存すればなんと100GBも追加で容量がもらえます。

OneDriveにログイン後、dropboxに関連付けすれば完了。30秒ほどで終わりました。ほらね。

f:id:yuruihito:20150224103112p:plain

キャンペーン参加は以下から。1年間限定みたいですが増やせるなら増やしておきたいですよね。


OneDrive bonus

 

ちなみにOneDriveに登録してるとMicrosoft OfficeのエクセルとかがWEB UIで使えちゃいたりします。

エクセルファイルをネットワーク上に置いて「共有」機能を使っているとクソ重くてパソコン壊したくなりませんか?OneDriveのこの機能なら同一ネットワークにいなくてもサクサク作業できますよ。オススメです。