バージョン切り替えたらrails sできなくなった時に試してみたこと
Railsのバージョンを切り替えて新しいアプリを作成したら、今まで作ったアプリで rails sができなくなったときのエラー解決手順。
個人的には永久保存版(笑)。
色々試しても効果なしでドハマりしてましたが、無事解決できてよかった(;'∀')
今後もrails sできなくなったらここに来て復習しようっと^^
エラー内容:rails sがうまくいかずサーバー起動ができない。
stack level too deep(SystemStackError)
エラー文はこんな感じ。
stack level too deepとは?うーん…調べてみたけど、このアプリでコードは変更していないので別の原因だろうなぁ…
試したけど今回は効果がなかった方法
ちなみに他のブランチに切り替えたらどうなる?ということで、切り替え後にrails sすると
"bundle installせよ"とのメッセージが出る。
Could not find autoprefixer-rails-8.4.0 in any of the sources
Run `bundle install` to install missing gems.
で、仰せの通りにbundle installしてからrails sしたけどやっぱり失敗。
bundle installはできてるみたいだけど。。
他にも
・ブランチを前のコミットまで戻したり(SourceTreeで操作)、
・リポジトリからcloneして別の場所に置き、cloneした方でrails sしてみたり
…なども試してみましたが結果はほぼ同じで、サーバー起動できませんでした。。
(゚Д゚≡゚Д゚)アワアワ
エラー直前までの自分の操作を思い出す
自分の操作と現状の確認:
- 新しいアプリを作成しようと、rbenvでRailsのバージョンを切り替えてrails newした
(ターミナルで)
rails new _5.2.0_ NEW APP (-d mysql)
既存アプリ:Rails4.2.6 / 新規アプリ:5.2.0 (Rubyはどちらも2.5.0)
他の既存アプリでRails5系もあり、今までは4系5系どちらも作動していた。
”bundle installせよ”と出る→bundle installしたけどrails sできない!
- 新規アプリでは起ち上げとサーバー起動は問題なし
(既存アプリのうちRails5系で作動できていたアプリ含む)
解決と試行錯誤の手順
既存アプリ4.2.6のバージョンを変更してみることに。
アプリのバージョンを途中で変更するには…ふむふむ
Railsのバージョンを4.2.6~>5.2.0に変更してみる =>gemのバージョン競合発生
↑記事を参考にRailsバージョンを4.2.6~>5.2.0に変更してみる
(新規アプリが5.2.0だったので合わせてみた)
まず
- Gemfileの記述を変更する
gem 'rails', '4.2.6' ここの記述を以下に書き換える
gem 'rails', '5.2.0'
- 次にbundle update railsを実行すると…
…なんかうまくいってないっぽい;
続けて
bin/rails app:update
を実行してみたけどやっぱり先には進まない。。
- エラー文bundle could not find compatible versions for gemでググる↓
bundle update rails が完了できるまで頑張る。
バージョンの競合とかで色々、エラーになって進まないので、ひたすら、バージョンの整合性を整えつつ、update する gem を追加していく。 (中略)
上記の例だと、seed_fu が activerecord の5.0.0以上のものを利用しているバージョンまで update する必要がある。
引用元:
うーむ…gemのいくつかが競合している??
それって1つ1つバージョン合わせないとだめなのか??(;'∀')
ハードル高いな…ひとまずこれは保留。別の方法ないだろうか。。
Gemfile.lockファイルを削除してみた =>さらに泥沼化www
以前別のエラーと格闘してたときに「Gemfile.lockを削除してから云々」という方法をとったことを思い出したので軽い気持ちで特攻したら更にエラーを生んだw
- Gemfile.lockを削除してからbundle update railsを実行
- " Run 'bundle install' "と言われるのでbundle installを実行
- 先ほどと同じ(bundle could not find compatible~)文言が出る。
~>とりあえずbin/rails app:update実行
すると…
~> Gemfile.lockがないよというメッセージが出る。
~> bundle installしてもGemfile.lockが生成されず、bundle could not find compatible~
が現れる
~> 詰 ん だ \(^o^)/
Rails5.0.0にしてみる =>一応rails s成功!コントローラーでエラー発生!
今度はRailsのバージョンを5.0.0にしてみたら、とりあえずサーバー起動はできました!
- Gemfileの記述、gem "rails", "5.0.0"に変更する
- 再びbundle update rails ~> ”bundel installせよ”と言われる
- bundle install実行
すると……お?!
bundle installうまくいってるっぽい!!!
Gemfile.lockも生成されました(;・∀・)ホッ…
―――――― だがまだ終わりではなかったのだ―――――――
~> rails sはできたけどコントローラーで以下のエラーが発生(Argement Error)
コントローラーにこんな記述してないんだが…?(゚∀゚;)
Rails5.0.1にしてbundle update => ついにエラー回避!!
最終的には以下の方法でこのエラーも回避できました。
- エラー文 key must be 32 bytes でググる
- 記事参考にGemfileでrails 5.0.1にして bundle update実行
~> 無事表示できた!!
ヤタ━━━━━━ヽ(´∀`*)ノ ━━━━━━!!!!
まとめ
サーバー起動できなくて本当にどうなるかと思いましたが、諦めずに取り組んでよかったです!
エラーに1つ遭遇するたびに勉強になるし、解決すれば2倍も3倍も勉強になる。
なのでエラーもっと食べたいw
学んだこと:
Gemfile.lockはやたら削除しちゃダメw
ちなみに今回の過程で、他にも1~2個エラーが出ました。
コード合ってるはずなのにSyntaxErrorと言われ、そういえば!と思って自分の過去記事を見たら載ってましたよw
いや~書いててよかったなぁ~^^
その他参考記事:
Qiita記事だらけになったw
ここまで読んでくださり、ありがとうございました^^
非ITで1か月かかる仕事も、プログラミング学ぶとたった2日で終わる話
非ITの人間でも、プログラミングを学ぶことで毎日の仕事はこれだけ変えられる!
IT転職を目標にプログラミング学習中、のじしおと申します。
今の仕事は非IT企業の事務職ですが、
先日、そんな他分野の仕事の中でも日々の学習の成果が実感できた出来事がありました。
ということで、
エンジニアやプログラマでなくても、
日常生活にプログラミング(や関連の学習)が大いに役立った体験
の記事です。
概要と現場と作業内容
どういう出来事なのかというと先日ツイートしたやつで、要約するとこんな話です↓
わずかなGUI操作しか分かってない人達の集まる今の会社で、膨大なデータ入力を無茶振りされた現場。明らかに無理かと思われたが、方法工夫すれば2日あれば余裕で終わりそうだわ。これだから知の探求は楽しいのだ^^
— のじしお@プログラマへ転職活動中 (@nojishioTw) 2018年5月23日
そしてExcelも侮れないものです
職場のPCスキルレベル
- 事務職だがExcelやPowerPointなどまったく知らなくても、まぁやっていけるような仕事である(できるに越したことはない)
- それゆえ30人弱いる事務職員の中で、コピペや保存などの超基本的なショートカットですら身についていない人も2~3割はいる
(いちいち右クリック→コピーを押す、右クリック→貼り付けを押す、、とかやってるらしい;)
- PC操作で「ここどうやるんだろう?」→「ググって調べてみよう」ができる人はおそらく5~6人くらいしか;;
こんな状態です^^;できない人は何年経ってもできないまま。
どちらかというと私はプログラミングを知る前から、
わからないことがあったら調べる→なるほど!→活用できた!→嬉しい^^
という過程が好きな方でした。
そんな自分から見るとよくそれで平気だよなぁ…と不思議に思ってしまう。。
他の一般企業もこんな感じなのかなぁ?…いやいやさすがにもうちょっとマシなのでは?よく知りませんが…
無茶ぶりされた作業内容
こんな圧倒的スキル不足の集団に、ある業務が投下されました。
その内容とは…
- データ入力作業:元画像データを複写し、それぞれ指定品番にリネームする
- 計5.5万件、一人あたり2000件
- 期限は約一か月後(一人あたり毎日100件片づければ終わる計算)
- もちろん通常業務をこなしながら
これは大変な無茶ぶり(笑)
まともなショトカすら知らない人たちにとって、これはもう絶望でしかないですよ^^;
しかもこの業務振った部長による作業手順の説明があったわけですが、
その説明すら「データ1個1個を手作業でリネームしていく。慣れれば早いから大丈夫」
なんて有様でした(;'∀')
日々のプログラミング学習の成果が日常にも反映できた瞬間
成果1:最初から作業のゴールを把握し、より早い解決ルートを模索できた
上記の無配慮(笑)な説明を受け、まず私が考えたことは、
- 1個1個作業などせずとも、もっと効率のいい方法があるはず!
- この作業のゴールは何か?そこに到達するまでのやり方は工夫してみよう!
- 要はファイルを(1つ1つ異なるが、ある程度規則的な番号に)リネームするのがゴールだ!
→ファイルをまとめてリネームする方法、調べれば出てきそうだな。
そこから取り掛かってみるかな!
こんな感じです。
プログラミング学習を始めてから、分からない知識や単語、予期せぬエラーといった問題解決に当たる機会は日常茶飯事ですし、
解決するにはまずは調べてみる(1つの記事だけではなく他の記事も参考にする)のが当たり前の姿勢になってきます。
また、「同じ処理を行うコードでも書き方を変えるとだいぶすっきり書ける」というケースも学習の上でたびたび遭遇します。結果に至る方法はいろいろあるんだということ。
私の場合もともと分からないことは調べる習慣はありましたが、今回の問題に直面して、
★今ある知識ではできなくても、調べれば解決できそうだという見当と確信を持てた→作業のモチベを維持
★膨大な作業量を前にしても臆せず、解決に向けて多方面的な捉え方をしてみようという発想からスタートできた
★最初からある程度の解決の筋道を立てられた
これらのことは、プログラミング学習を続ける中で得られた成果だと思います。
成果2:DLソフトやコマンドラインの使用に抵抗がなくなり、解決方法の幅が広がった
ファイルの一括リネームに当たりをつけ、楽して解決できる方法を模索。
いくつか記事を見た中で、この辺を参考にさせていただきました。
↑この記事は初心者でも分かりやすい^^この記事だけでも行けそうです。
しかも家では普段Macのターミナル故に、Windowsコマンドプロンプトに馴染みのない自分には助かる♪(会社ではwindows使用)
ファイル名やパス取得には…ほうほう!やはり一括でできるわ~^^
変換ソフトもあるんですね。こういうのも今後に応用利きそうです。
このように、フリーソフトやコマンドラインの使用も当たり前と思えるようになったことが2つ目の成果です。
プログラミング学習をする上でターミナルの使用は当たり前だし、新しいツールを取り入れてみるのもよくあること。
特にコマンドラインは、普段から触ってない人だったらかなり敷居が高く感じられるのではないでしょうか。
私も、もしプログラミングに出会わなかったら「なんだか黒い画面で専門的なことしてて難しそう」と避けてしまうと思います。
実際は、記事のようにコマンドラインに頼ることで作業は大幅に楽になる!
少しでもこういった知識があれば、問題解決の選択肢は大幅に広がることを実感できました。足りない知識は都度補って、蓄積していけばいい^^♪
成果3:「1日100件×1か月」の仕事が2日で片付いた
ハイ。ということで方法を調べてやってみたところ、2日目にして余裕で自分の担当分を終わらせることができました。もちろん通常業務の合間の作業だけで。
こうやって、
何か問題が起きた時に自分で解決法を調べ
それを直面している案件に応用できて
結果、目的が達成できた瞬間には無上の喜びがあります。
これってプログラミングの本質ですよね^^
これが楽しくて今私はプログラミングに取り組んでいます。IT分野とは関係のない仕事へも、日々の学習の成果を示すことができて、「やっぱり毎日勉強していてよかったなぁ」と実感できました!
そしてExcelもなかなか侮れないですよ。自分もプログラミングに興味持ったきっかけの一つはExcelの存在もありますから(その話はまたいつか)。
「はぁ、Excel?…ププッ」って言う人いるけれど、侮れないですよ。特に事務職には間口の広い「入り口」。ExcelがきっかけでDBやプログラミングに興味を持ち、SQLのに進んだ人を4人知っているもんでね。
— 沢渡あまね🍭職場の問題かるた(CV:戸松遥/絵:白井匠) (@amane_sawatari) 2018年4月20日
成果4:アウトプットを意識、リファクタリング(改善)の意欲
そんなこんなであっという間に問題解決に至ったので、最後に
「この方法を他の人にも伝えられたらいいなぁ」
↓
「操作手順やポイント、自分用のメモをもう少し詳しく書いてみよう」
↓
「PC操作に慣れない人も多い。そういう人にも分かりやすい方法は?」
というふうに人に教えること(アウトプット)を考えたのと、
そのために詳しく資料を書いたり、自分の行った手順の見直し、そして不慣れな人を考慮した作業手順の吟味(リファクタリング)をしてみようと考えました。
成果2で挙げたように、選択の幅が広い自分向けならばコマンド活用などでもっと手っ取り早い方法を求めるのもアリです。
でも不慣れな人に理解してもらうことを考えると、
- 効率を考えつつも、普段使ったことのないツールの使用は最小限に抑える
- その上でどうしても必要な知識や操作には簡潔かつ分かりやすく説明を入れる
この点を意識して教える必要があるなと思いました。
これを踏まえても先ほど紹介した記事はコマンドラインの使用も最後に貼り付けして実行するだけだし、基本Excelで編集する方法だから、初心者にも易しいかと思われます。(これをベースにすれば今後も応用も利きますし^^)
改めて思うのは、人に教えるのって難しいですよね。。2000件のデータ作業終わらせるより、その手順の説明資料を作る方が何倍も時間かかる(笑)
【追記】
後日、これを職場でプレゼンしました!!!
終始緊張し通しでしたが、職場の方々には「すげー(゚Д゚;;)ー!!」と言ってもらえてよかったです(笑)
たったこれだけの作業でも「もしやパソコンのプロですか…?」と高評価(誤解)を頂きましたので恐縮です(;'∀')
まとめ:やっぱりプログラミングを勉強していてよかった!
何においても言えることですが、積極的に知識を身につけようとしない人の場合、自分が取り得る手段は非常に限られてしまいます。
与えられたものが唯一絶対だと思ってしまうことすらあるでしょう。
もし他の手段を探したいと思っても、今自分の持つ限られた知識の中でしか考えることができません。
今回の場合でも、件の業務を与えられた現場では
「こんな膨大な作業はとても無理。。。」と不満を口にしながらも
「でも仕事だし毎日コツコツやるしかない…」と
部長の説明通りの、1個1個手作業法で取り組もうとしていました。
私ももしプログラミング学習をしていなかったら、こんなに早く解決に至ることも、それどころか解決方法を見つけることすらできなかったかもしれません。
プログラミングを学ぶことによって普段の業務の大幅な効率化という大きな恩恵をもたらすことができました。
業務内容や転職云々に関わらず、どんな仕事をされている方でもプログラミングを学ぶ価値は大いにあると思います。
今回のことでまた一つ学習へのモチベが上がりました。自分のスキルはまだまだですが、これからも一つ一つ積み重ね、自分の血肉に変えてゆけたらと思います。
ここまで読んでくださり、ありがとうございました。
ロードバイク・クロスバイク初心者でも○○をするだけでもっともっと自転車に乗りたくなる♪
現在、山梨という車社会の田舎に住みながら、車なしで生活しています。のじしおと申します。
維持費やら渋滞やらから解放された田舎暮らしは、さほど不便も感じず思いのほか快適です^^
車なしで田舎暮らし、始めた経緯などはこちら↓
http://nojishio-notes.hatenablog.com/entry/2018/02/12/211606nojishio-notes.hatenablog.com
ついでに、車を手放すだけで他に何の努力もせずお金が貯まった話。↓
http://nojishio-notes.hatenablog.com/entry/2018/04/11/234718#%E6%80%9D%E3%81%84%E5%BD%93%E3%81%9F%E3%82%8B%E5%8A%AA%E5%8A%9B%E3%81%9D%E3%81%AE%EF%BC%91%E7%94%B0%E8%88%8E%E3%81%A7%E8%BB%8A%E3%81%AA%E3%81%97%E3%83%AB%E3%83%BC%E3%83%88%E3%81%AE%E9%96%8B%E6%8B%93%E7%B6%99%E7%B6%9Anojishio-notes.hatenablog.com
上記の記事の通り、
初心者でもクロスバイクはとっつきやすく、田舎暮らしがさらに快適になりました。
ママチャリは値段はお手頃ですが車体が重いので、ちょっとした坂も結構大変だったりします。。
通勤通学に使うならロードバイクやクロスバイクがおすすめです。初心者なら特にクロスバイクがイチオシ^^
クロスバイクは、見た目がシティサイクルに近いだけでなく、価格帯がロードバイクやMTBほど高額ではないため、最も気軽に始められるスポーツ自転車と言えます。
10km程度までの距離の自転車通勤では、クロスバイクを使用している方が非常に多いです。スポーツ自転車初心者の方に近年とても人気があります。普段着感覚でカジュアルに使うことができます。
引用元:
www.bike-plus.com
ところで、ロードバイクやクロスバイクの購入を迷っている方は、
価格の面で足踏みしてる方も多いのではないでしょうか?
ロードバイクの価格は10万円前後からスタートし、プロのロードレース選手が使用しているハイエンドのロードバイクは100万円以上するものも珍しくありません。
10万前後のロードバイクはエントリー用に位置づけられるため、アルミフレームのモデルが多くなっています。カーボンフレームを採用したフレームは、20万前後から登場しコンポーネントもグレードアップされる傾向があります。
(中略)
クロスバイクはロードバイクと比較すると、5万円台〜と、やや安めの価格帯から品揃えがあり、金額レンジが広い傾向があります。
引用元:
jitensha-hoken.jp
せっかく高い金額出して買っても、続けられなかったらどうしよう?
初心者がいきなりスポーツ自転車で毎日通勤に使うのは大変そう…
大丈夫です!(`・ω・´)b
私もクロスバイクに乗り始めてから1年になりますが、今までママチャリすらあまり乗ったことのなかったド素人です。
いまだにギアの切り替えもうまくないような初心者ですが、
普段何気なく行っている○○のおかげで自転車への愛着が格段に上がりました(笑)
自転車へのモチベーションはむしろ始めた頃よりもUPしました(゚∀゚)↑↑↑
不思議なもので、今は「整備とかカスタマイズとかそのうち自力でやってみたいな~」なんて思うようになってますよ。まだまだ初心者なのに(笑)
ということで、
クロスバイクの購入を迷ってる方や、
自転車持っているけど愛着はイマイチ、、、な方は
これをしてもっともっと自転車を好きになりましょう^^♪
○○をして自転車をもっと好きになろう!
では○○とは何なのか?
答えは掃除です。
なぁんだ、そんなこと?って思いましたか?
いえいえ、ロードバイクやクロスバイクのような自転車は特に、まめなお手入れが重要なのです。
と聞いて、初心者の方は
掃除って言っても、どこをどうすればいいか分からない…
パーツの分解するんだったら難しそうだし無理だよ…
といった不安がもしかしたらあるかもしれません。
が、
大丈夫です!(`・ω・´)b
初心者こそ、まずは拭き掃除からやってみましょう♪
お休日みの日とか、天気のいい日とか、あなたの気分の乗ってる日にちょこっと拭き掃除してみようかな~くらいの気持ちで構いません。
気軽に始めてみましょう。
次は道具とポイントについてです↓
拭き掃除のポイント
1.必要な道具: ウエス、これだけ!
自転車の拭き掃除にはウエス(自転車の拭き掃除用のクロス。布みたいな紙みたいな。)があるといいです。
Amazonとかホームセンターとかで安く手に入ります。
私はフクピカを使ってます。これもホームセンターとかで買えます。
- 出版社/メーカー: ソフト99(Soft99)
- 発売日: 2015/03/02
- メディア: Automotive
- この商品を含むブログを見る
思う存分、ふきふきしましょう^^(笑)
2.そして感謝の気持ちをプラス
もう一つ忘れてはならないのが、気持ちを込めて掃除をすることです。
某●岡イズムかと思って侮るなかれ、
感謝の気持ちを込めることで、愛着が格段に上がります。珈琲でなくても(笑)
だまされたと思って「いつもありがとう」という気持ちを込めて拭き掃除してみてください^^
自分自身も不思議と嬉しい気持ちになりますよ♪
さぁやってみよう!実践編
ということで、実際私が拭き掃除したときの画像です。
さぁLet's TRY!!
ヽヽ ありがとう(^▽^)/ //
ヽヽ ありがとう(*´ω`*) //
ヽヽ いつもありがとう イェーーイ!!ヾ(*´∀`*)ノ♪ //
掃除してるだけなのに結構楽しいんですよこれが(笑)
好きな音楽かけながらやるのもおすすめ。
おまけ。
今日の成果!!うむ!こんなに汚れが取れたぜいv(゚∀゚)v
おわりに~上達への近道は、好きになることと見つけたり~
某●岡イズム、侮りがたし(笑)
感謝の気持ちを込めて掃除すると、自分もいい気分になれるので、もっともっと自転車に興味や愛着が出てきます。
それに掃除をすることで、「へー、ここの部分はこういうふうになっているんだなぁ」と
あなたの自転車のことを詳しく知るいい機会にもなります。
そうすることで「もっと自転車のことをもっと知りたい」「もっといろいろできるようになりたい」と思えるようになれば
もうあなたは初心者から一歩先に進んでいるでしょう。立派な自転車乗りの仲間入りです。
せっかく何万も出して良いものを買ったのですから、大事に長く乗り続けたいですよね。
もし時間が作れない時や気分の乗らないときはまた今度にすればいいし、
もしチェーンの注油や他のメンテナンスが分からなければ、近くの自転車屋さんに任せればいいんです。
初心者は初心者なりに、自分の可能な範囲で自転車に接していってください。
愛着が湧けば自然と自転車に詳しくなれますし、自分でできることが広がります。
自転車は奥が深くて、とても楽しいです^^
私もパーツ付け外しとかメンテとか、少しずつできること増やしていけたらと思っています。
ここまで読んでくださり、ありがとうございました^^
SyntaxError Invalid char `\x08' in expressionが出た時とりあえず試してみるとよいこと
RailsでSyntaxError (syntax =構文 の意) はよく遭遇するエラーですが、
「スペルミスか何かかな?」と思ったら
空白やコメントアウトしてる部分でSyntaxErrorが出て
( °∀°;)えっ????
ってなりました;(笑)
SyntaxError で Invalid char `\x08' in expressionが出たときは、まずここを見直そう!
このエラーが出たときに
「該当コードのどこも間違ってないのにおかしいなぁ…」という時にも有効です。
すぐ直せるエラーですが、画面眺めてるだけでは少々発見し難い。。。
忘れた頃にまた同じパターンに落ちたらハマりそうなので、忘れずに書き留めておこうっと。
- エラー内容:SyntaxError in 〇〇 Controller
- Invalid char `\x08' in expression
- Rails初心者はここを疑え!その①: #は半角変換× 半角入力○
- Rails初心者はここを疑え!その②:空白でSyntaxErrorが出たときは
- その③:とりあえずInvalid char `\x08' in expressionが出たらやってみるとよいこと
- まとめ
エラー内容:SyntaxError in 〇〇 Controller
私のエラー画面はこちら。UsersControllerでSyntaxError。
で、左画面コントローラ側の7行目、#新規作成 の部分でエラーだそうです。
Invalid char `\x08' in expression
SyntaxErrorが出るとこの文章も目にする。いつも読み流してたけど、せっかくなので少し理解しておく。
エラー・メッセージ
(一部抜粋)
Invalid character
プログラム・メッセージ文字列の中に無効な文字があります。
Invalid expression
式データ要素は無効です。(IEEE488.2,7.7.7.2を参照してください。)例えば、括弧が対をなしていなかったり、文字が規格に違反しています。
引用元:
無効な文字があるよって言ってたんですね。
でもコメントアウトしてるんだから、そもそも無効なのでは?
ヽ(*゚∀。*)ノアルェー?????
考えようとするとドハマりしそうです(笑)
さて解決にいきましょう。
Rails初心者はここを疑え!その①: #は半角変換× 半角入力○
解決の糸口は、コメント記述時の#にありました。
まず自分の場合、コメント書くときには主に次の2通りのやり方をしています。
一つは、先に文章書いてから行選択 でコメントアウトさせる方法
(文章書く → Command+L → Command+/ )
もう一つは、まず#を書いてから文章を書きだす方法
で、この#から書き始めていると(時々やってしまっているのですが)、
#を書く際、直前まで かな入力 になってたら(#あとにすぐまた日本語書きたいので)
#の入力を、かな入力で#を打ってから半角変換している
↑これがエラーになることがある(ただし毎回ではない)
この毎回じゃないというという点が難点^^;
エラー回避できるときもある、というよりむしろ忘れた頃にエラー認識されたりするので、コメントアウト部分でエラー出てたらまずはここを見直してみよう。
Rails初心者はここを疑え!その②:空白でSyntaxErrorが出たときは
これでコメントアウト部分のエラーは回避できました。
そのあとに続けて空白部分でもSyntaxErrorが出たので、これも直してみます。
エラーになってる空白の行を一回消して書き直してみる。
エラーにされている左画面の11行目、余計な空白は消してみる
これでどうかな?
↓
うむ!解決!^^
その③:とりあえずInvalid char `\x08' in expressionが出たらやってみるとよいこと
空白やコメントアウト部分でない箇所でも、Invalid char ~が出たら下記のように、とりあえずコードの空白部分を書き直したり、一文まるごとすぐ下などに書き直してみると、あっさりエラー回避できることもあります。
空白書き直すときは先頭や末尾も忘れずに書き直しましょう。
まとめ
★コメントの#は半角入力で書くべし
★空白でエラーが出たら、空白を書き直すと解決できる場合もある
コメント部分や空白といった、一見処理に関係のないはずのところでSyntaxErrorになったときには、まずこのあたりをチェックしてみよう。
#の変換を疑うという発想は、画面とにらめっこしてるだけだとなかなか発見しづらいです。
なんとなくでも手を動かしてたら解決できるエラーではありますが、一つ一つ自分なりに理解して、糧にしていけたらと思います。
今後もたびたび遭遇しそうなエラーなので、またハマりそうになったら「そういえばこういう事例あったなぁ」と思い出して、次に活かしていきましょう~♪
ここまで読んでくださり、ありがとうございました^^
InvalidAuthenticityTokenから学ぶ エラー解決の考え方【Rails】
Railsでテキスト入力やチェックボックスやラジオボタンなど、フォームのページを作って送信ボタンを押したときに出たエラー。Authenticity Tokenとな…?
プログラミング初心者ゆえに知識や経験がほぼなくても、こんなふうに考え方を工夫すれば解決できた^^というエラー備忘録です。
- エラー内容:Invalid Authenticity Token
- エラー文の理解(Railsもプログラミングも初心者がシンプルに考えてみる)
- 推察してからコードを見なおす => 発見・修正・解決!
- まとめ
エラー内容:Invalid Authenticity Token
エラー画面↓ testコントローラのshowアクションでエラーね。ハイ
↓ 入力フォームのHTMLファイル。右はそのフォームのブラウザ表示。
↓ testコントローラのshowアクション部分。
今回はモデル移行前で、まずコントローラに処理を書いています。
で。送信するとエラーになると。。
コード文眺めてるとなんとなく見当がつきそうではありますが、根拠となりそうなページ を探すことで初心者なりに、おおよそでも納得できるところまで理解を持っていこうと思いました。
エラー文の理解(Railsもプログラミングも初心者がシンプルに考えてみる)
invalid :無効な
authentic :本物の
authenticity(名) :真偽性、信頼性
token :記号・象徴
Authenticity TokenでググってみるとCSRF(しーさーふ)対策というワードに行き当たります。
verify_authenticity_token メソッド
大雑把に説明すると、verify_authenticity_token メソッドはHTTPリクエストのヘッダーやボディに入っているCSRF対策用トークンの値を検証するメソッドです。検証した結果、不正だと判断した場合に InvalidAuthenticityToken エラーを発生します。(このエラーは protect_from_forgery メソッドのwithオプションに :exception を渡したときに発生します。
(中略)
このメソッドでは以下の5つの項目を検証していきます。
- 設定ファイルで config.application_controller.allow_forgery_protection を false に設定しているか
- リクエストのHTTPメソッドがGETであるか
- リクエストのHTTPメソッドがHEADであるか
- セッション変数 _csrf_token の値とリクエストボディの authenticity_token の値を比較した結果、正しいと判断されるか
- セッション変数 _csrf_token の値とリクエストヘッダーの X-CSRF-Token の値を比較した結果、正しいと判断されるか
引用元:
あとこちらも
Rails では、デフォルトで CSRF の対応がされています。
これは、セッション内に _csrf_token というキーで保存された値と、 POST 時に hidden field の authenticity_token で指定された値を比較することで、実現されています。
Ajax の場合には HTTP ヘッダ内に指定することもありますが、あまり関係ないので省略します。要は、 CSRF トークンという、セッション毎にランダムに生成される値が、 POST で渡されてくる値と一致しているかを見ています。
引用元:
ふむ…つまりものすごくシンプルに考えると…
postで送信されたときに値がおかしいっていうエラーのようだぞ!
(送信ボタン押してエラーが発生したことからも間違いないと見える)
推察してからコードを見なおす => 発見・修正・解決!
ということで先ほどのコードの見なおしをしたところ、ありましたー!!
HTMLテキスト入力フォームの性別欄と、
同じファイルの下の方で性別ラジオボタンを作ってるところ、同じgenderをキーにしていました。
そしてコントローラ側でも(笑)
修正。
被っているとこ、どっちかのを消せばよいので、テキスト入力フォームの方の性別欄をなくしました。HTMLファイル・コントーラの処理のとこでgenderを含む記述をコメントアウト。
これでgenderをキーにして値を送ってるのはラジオボタンフォームだけになりました。
改めて送信ボタンをポチ!
↓
うむ!できた!!^^
-------------------------------------------------------------------------------------------------------------------
※このエラー文についてもう少し説明:
変な値が登録されないようにデータベース側では、不正な値があった場合はそれを弾いてくれている(invalid)。
今回のように同じキーなのに別々の値を送信してたため、どれを登録していいか?どれを信じていいのか?(真偽性、信頼性が疑われる = authenticity)
とエラーを出しているようです。
まとめ
漫然とコードを眺めててもなんとなく予想がつくエラーですが、こうやって根拠となる記述を探した上で、改めて自分で考えてみることで今後のエラー対処の糧になりそう。
考え方や着目するところ、などのコツを会得できれば広く応用が利かせられて大きな武器になると思います。思考ルートを切り開くって大事だなー
ここまで読んでくださり、ありがとうございました^^
Template is missingから学ぶ エラー解決への思考ルート【Rails】
Railsで「HelloWord」出そうとして速攻エラー出した超初心者。
見たことのないエラーでも、こういう考え方をすれば解決へのルートは導きだせる。
という非常に大切なものを学べましたので忘れず書いておきます。
エラー内容 :Hello World出そうとして即エラー「Template is missing」
Railsアプリ立ち上げたあと、ルートを指定してコントローラとビューファイルを追加。
さっそく「HelloWord」を表示させよう!と思ったら見たことのないエラーが発生。
え?え?(;゚Д゚)
エラー画面
ルートだって指定してるし、
コントローラーにルートで指定した通り、indexアクションも追加してるし
ビューファイルもちゃんとuserlistのディレクトリに作成してるのに…
何度もやってる手順なのになぜ…と数分考えこんでしまいました;
エラー文の意味・解決するための思考ルート
Template is missingとは
エラー文の Template is missing とは簡単に言うと、ビューファイルが見つからない
というエラーだそうです。
Railsではアクションが呼び出された場合、何らかの結果を一度だけ利用者へ返す必要があります。アクションメソッド内で直接利用者へ結果を出力することも可能ですが、通常はビューに該当するテンプレートを使って利用者へ返す結果を作成し出力します。
★★思考ルート:考えられること・疑うところ【重要】
確かに作ってあるビューファイルが「見つからない」とされている
↓
(ということは今、ビューファイルの中身はエラーに関係してないこともわかる)
↓
ルート => コント―ローラ => ビューの流れなので、コントローラがビューを探してるあたりのエラーのようだ
↓
ではビューファイルはどうやって作成したか?
↓
当該ディレクトリ内に、手動で新規ファイルを作成した
↓
手動ということは…間違いを起こす可能性がある
↓
ビューファイル作った部分を見てみよう!
ただしファイルの中身ではないということは…?
・
・
・
あったー!ファイル名間違えてたーー!
htmi という見つけづらいスペルミスw
うむ!解決!
まとめ
あるはずなのにファイルが見つからないとされているとき、こんなふうに推測していく、よくあるパターンのようです。
手動操作の箇所はアタリをつけるとこなんですねー
そういえば自分の仕事でも似てる部分があるなぁ。
大変勉強になりました。こういう思考ルートは自分の中にもっといっぱい蓄えていきたいなと思いました。
ここまで読んでくださり、ありがとうございました^^
年収300万でも勝手にお金は貯まるので、「努力しないこと」の本当の美点について考えてみる
※「だから何にも努力しなくてもよい」「努力0が正義」という話ではありません。
こんばんはー のじしおと申します。
タイトル の通り、年収は300万くらいの薄給なのですが、
アフィリエイトとかFXとか何の努力もしてないのに、ここ数年は
気づいたら年間約80~90万くらいの預金額が+になっていて最近ちょっと喜びました(笑)
そこからふと思ったことが、
「努力して努力して、何かを成し遂げる」というのはいつの時代も美徳とされ、多くの人の共感を得るところです。自分もスポ根ものとか、努力型のキャラとか大好きです。
自分自身も、これと決めたことには一心に努力して努力して…何かを成し遂げられるような生き方に憧れを抱いております。
ですが、そんな
「努力して努力して何かを成果を得る自分」よりも
「苦労なしに成果を得る自分」の姿の方が
本当の意味で価値がある、
自分に胸を張れる自己のあり方なのではないか
とも思いました。今回はそんなお話です。
普通に生活してるだけで勝手にお金が貯まる
さきほどのように、最近気づいたら自分の貯金額がそこそこ貯まってきていました。ざっと計算したところ、年間約80~90万くらいの額で預金額が増えている状態がここ数年持続。年収は300万くらいの薄給です。
ですが自分はただ普通に会社行って、控除でがっつり引かれた後の薄給もらって生活してただけ(笑)
一人暮らしですが自炊は一切してないです(笑)毎食コンビニかスーパーで買います。
で、そのついでにほぼ毎日お菓子やら飲み物やらも買うので食費はそこそこ
かかってるはず。新作ゲームも特典付でよくポチるし、
別段「お金貯めなきゃ!」「節約して貯金に回したい」という明確な意思や目標もなかったわけですが、普通に生活してるだけで何やらお金が貯まってゆくわー(゚∀゚)
薄給なのになぜ…???
その理由を考えてみました。
特に苦労せずにできた ≠ 何の努力もしなかった
思い当たる努力 その1:田舎で車なしルートの開拓・継続
それで思いあたったのが、まず以前の記事でも紹介したように、
現在、車社会のド田舎で一人暮らしなのですが、
自転車の通勤ルートを開拓したことによって本来、車を維持して吸い取られる費用は浮かせられている
という点があります。(年間30~40万円前後の儲けですってよ!!)
都会暮らしと比較した場合は家賃が高くつくはずなので、少なくとも
〔都会の月々の家賃 - 田舎の家賃〕 の差額分はプラスになっています。
詳しい過去記事はこちら↓
始める前は心配事もありましたが、思い切って自転車にしてみたら、思いのほか快適で満足しています。
そしてそれを継続している結果、このように大きな恩恵が受けられているためだと思います。
思い当たる努力 その2:人生における大目標を定めて突っ走っている
もう一つの要因として現在、未経験ながらプログラミングの楽しさと可能性に惹かれ、勉強を重ねる毎日を送っていること。
そしてそれが、すっかり自分の習慣の一部になっているおかげで、
交際費や娯楽費などを中心に、食費以外の出費が自然と抑えられていることです。
習慣化される→しないと落ち着かない→勉強する→ちょっとずつでも前に進める→達成感、モチベ上がる
↑ これが自然と努力できている状態
この自然とできている努力の副産物として、何の苦労もなく出費を抑えることができて、気づいたらお金が貯まっていきました。
そして、こういう「自然に努力してて苦労を感じず成果(増収)を得られた」時の自分は、達成感や高揚感、自分を褒めてあげたい気持ちで満たされていて、
その状態は、「貯金するにあたって何の努力もしなかった自分」はおろか、
「あれこれ節約やら計画やら苦心して、やっと貯金が増えた自分」のそれを凌ぐほどに、自己にとって大きな満足感が得られました。
まとめ
毎日努力して苦悩して、ようやく何かを手にするサクセスストーリーも美徳ではあります。
ですが、もしもその努力を「努力」だとは思わない境地に達することができたのなら、
それは絶好のチャンス!なのではないでしょうか^^
ブログの育成やアフィリエイトなどはまだまだ先にある目標ですが、とりあえず今は10記事20記事目指して進んでいきたいです。
努力を継続することで習慣化する。
あなたのその努力が自分の生活の一部になって、さらにそれが日常の一部となったとき
きっとあなた自身に、何物にも代えがたい幸福が訪れることでしょう。
ht・tps://twitter.com/badassceo/status/974214724
「努力している」と自覚しているうちはまだ道半ば なのかもしれませんね。
ついでに自分のモチベーションを上げる
自分も昔は、ただただ無為に引きこもって時間を浪費していた頃もありました。
それに今だってやる気が起きないときや、一日何もせずに過ごしてしまう日もあります。 そんな余裕ないんですが…
でも叶えたい目標を持って自分を鼓舞して毎日過ごしていると、自然とまた勉強へのやる気が湧いてきます。こんなふうに何かに打ち込めるものを見つけられたことは、とても幸せなことだと思います。
これからも日々の努力を積み重ねていって、もっとプログラミングにのめりこんでいけたらいいなーそれにブログももっと育てるぞーノ
仕事でも趣味でも寝食を惜しんでプログラミングしちゃう人って、パズルを途中でやめられないような人で、評価や技術力に対する向上心とかではなく、自分の納得感や気持ち悪さの排除の為にやってるんだと思う。ただこういった人は実力も伸びるし結果として評価も高くなる。プログラマのしての素質かな。
— ひさじゅ@すたてく社長(PG) (@hisaju01) 2018年4月5日
できるかできないか、そんな事はどうだっていい。そんな考えは君の可能性を縮めるだけだ。できる事だけに挑戦してたらいつまでたってもデカい事は成し遂げられん。挑戦する価値があるかないかで考えろ。成功しようが失敗しようが挑戦する事自体に価値があると思える事に出会えたらとことんやってみろ。
— Testosterone (@badassceo) 2018年3月15日
「頭ではわかってるんだけどできない」ってムチャクチャ勿体無いからな。勉強する事。早寝早起きする事。適度な運動をする事。この世には従ったら100%人生が好転するアドバイスが山ほど存在する。人生がうまくいってる人といってない人の差なんて、それらをやってるかやってないかだけ。やりましょう。
— Testosterone (@badassceo) 2018年4月10日
やるしかないなら、やるだけだ!!
セリフ/【できるできないの問題じゃない。やるしかなければ、やるだけだ】 - ファイナルファンタジー用語辞典 Wiki*
ここまで読んでくださり、ありがとうございました^^