のじしお@プログラミングがんばる

田舎でも車なくてもやっていける話とか、プログラミング学習の備忘録とか。いいタイトルが思いつかないんだ…;;まずは書いて、あとから随時手入れをば。

【Sourcetree】 .gitignoreにもないファイルが追跡されなくなっていた時の対処法

Railsアプリ開発で、現在はSourcetreeでコミットやプッシュしているのですが、

ある日気づいたら

 

  • 特定のファイルがGithubやSourcetreeで、変更などの反映がされなくなっていた(=追跡されてない。というか存在すらしていない状態)

 

  • しかし.gitignore(=gitの追跡を無視する対象リスト)には件のファイルは記述されていない

 

 

という事態に陥っていましたw

1~2週間くらい悩まされていたのですが、調べなおしたら簡単に解決したw

ので忘れずにめもめも。

 

 

エラー内容(もとい症例):

ディレクトリごとグレー表示だが、無視されているのはそのうち特定のファイルだけ
しかも .gitignoreにもない

症状は次の図の通り。

 

ビューのusersディレクトリとpublicディレクトリが、いつの間にかグレーになっている。

.gitignoreファイルを見ても、どちらも書かれていないので無視対象でないはずなのに;

  (tmpディレクトリは.gitignoreに記載されているからグレーで問題ないだろうけど。。)

f:id:piyomaru-bunbun:20180711231657p:plain

 

上のテキストエディタではusersディレクトリまるごとグレー表示になってますが、問題はshow.html.erbファイルで、

コミットやプッシュしても(indexなど)users以下の他のファイルは変更反映されてるのにshow.html.erbだけがGithubやSourtreeに追跡されていないようで、

ブラウザ表示はできるのにプッシュしてもリモートに”ない”という状態。

f:id:piyomaru-bunbun:20180711234009p:plain

 

 git status --ignored コマンドを打ってみる

 git status --ignored で追跡されてないものは検出される。

やっぱりusers以下のファイル全部グレーになってたけど、showファイルだけなんですよね。追跡されてないのは。

f:id:piyomaru-bunbun:20180711235852p:plain

 

ちなみにメッセージの通り、addするときに-f オプションをつければリモートにあげることはできました。でもSourcetreeには出てきませんでした。

 

 

なぜshowファイルだけ ”ない” 状態なのか

この理由はおおかた予想がついています。

このshowファイルは、usersディレクトリがグレー表示になった状態で新規追加したファイルだったから。

 

ディレクトリ以下が追跡されない状態になり、そこに作ったファイルだったから最初から追跡対象になっていないためですね…(´ー` )

 

 

状況は把握できたので、あとは追跡されてないのをなんとかするだけだー(`・ω・´)ノ

 

対処:Sourcetree側の無視リストを再度確認

 日を改めてググってみたらすぐに回答が見つかりましたw

  

Q.

SourceTreeでGitを管理しているのですが、無視したくないファイルが無視されてしまい、解除の方法がわかりません。

 

A.

以下のどちらかに該当の設定はありませんか?

  • グローバル
    オプション>Git>グローバル無視リスト

  • リポジトリ
    設定>詳細>リポジトリ固有の無視リスト

 

引用元:

Git - SourceTreeで無視リストの設定方法について(29437)|teratail

 

 

 グローバル無視リスト…だと…?!

f:id:piyomaru-bunbun:20180712003410p:plain

 

 お?!!!

f:id:piyomaru-bunbun:20180712004041p:plain

あ      っ      た  (´_ゝ`)

しかもちゃんとusersディレクトリ以下が対象になってるヨ。

gitに追跡させたいものはこの中から削除しましょう。

 

 

 

すると…

f:id:piyomaru-bunbun:20180712004317p:plain

 

やっとだ…やっと復活してくれた(;∀; )ヨカッタ…

 

 

 

Sourcetreeでもこの通り。いままでshow.html.erbはいくら変更加えてもここに出てくなったんですよーやっと出ましたw

f:id:piyomaru-bunbun:20180712004528p:plain

 

 

おまけ:思い当たる原因

Sourcetreeのファイルステータス欄にて、コミット時にいらないファイルを「無視」や「削除」をしようとしたときにうっかり無視リストに加えてしまった。

 

 

こういうのはエラーって言えるのかなぁ…?

でも解決できてやっぱり嬉しかったので満足です^^

 

ここまで読んでくださり、ありがとうございました。

 

 

バージョン切り替えたらrails sできなくなった時に試してみたこと

 Railsのバージョンを切り替えて新しいアプリを作成したら、今まで作ったアプリで rails sができなくなったときのエラー解決手順。

 個人的には永久保存版(笑)。

  

色々試しても効果なしでドハマりしてましたが、無事解決できてよかった(;'∀')

今後もrails sできなくなったらここに来て復習しようっと^^

 

 

 

エラー内容:rails sがうまくいかずサーバー起動ができない。

stack level too deep(SystemStackError)

 エラー文はこんな感じ。

f:id:piyomaru-bunbun:20180706225513p:plain

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はできてるみたいだけど。。

f:id:piyomaru-bunbun:20180706230107p:plain

 

 

他にも

・ブランチを前のコミットまで戻したり(SourceTreeで操作)、

リポジトリからcloneして別の場所に置き、cloneした方でrails sしてみたり

 

…なども試してみましたが結果はほぼ同じで、サーバー起動できませんでした。。

(゚Д゚≡゚Д゚)アワアワ

  

エラー直前までの自分の操作を思い出す

 自分の操作と現状の確認:

     (ターミナルで)

   rails new _5.2.0_ NEW APP (-d mysql)

  •  このときのRailsのバージョンは、  

f:id:piyomaru-bunbun:20180707174423p:plain

       既存アプリ:Rails4.2.6  /  新規アプリ:5.2.0 (Rubyはどちらも2.5.0)

  他の既存アプリでRails5系もあり、今までは4系5系どちらも作動していた。

 

  • 一度サーバーを切り、4.2.6の方でrails sしたら上記のように

        ”bundle installせよ”と出る→bundle installしたけどrails sできない!

 

  • 新規アプリでは起ち上げとサーバー起動は問題なし
  • 今回のrails sエラーにより、新規アプリ以外のすべてのアプリがサーバー起動できなくなった

  (既存アプリのうちRails5系で作動できていたアプリ含む)

  

解決と試行錯誤の手順

 既存アプリ4.2.6のバージョンを変更してみることに。

アプリのバージョンを途中で変更するには…ふむふむ

qiita.com

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を実行すると…

 

f:id:piyomaru-bunbun:20180707180128p:plain

…なんかうまくいってないっぽい;

 

続けて

bin/rails app:update

を実行してみたけどやっぱり先には進まない。。

 

 

  • エラー文bundle could not find compatible versions for gemググる

 

bundle update rails が完了できるまで頑張る。

バージョンの競合とかで色々、エラーになって進まないので、ひたすら、バージョンの整合性を整えつつ、update する gem を追加していく。 (中略)
上記の例だと、seed_fu が activerecord の5.0.0以上のものを利用しているバージョンまで update する必要がある。

 

引用元:

Rails 5へのアップグレードでやったこと。 

  

qiita.com

うーむ…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実行

  

すると…

f:id:piyomaru-bunbun:20180707210758p:plain

 

~>  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実行

 

すると……お?!

f:id:piyomaru-bunbun:20180707194812p:plain

 

bundle installうまくいってるっぽい!!!

f:id:piyomaru-bunbun:20180707201010p:plain

Gemfile.lockも生成されました(;・∀・)ホッ…

 

―――――― だがまだ終わりではなかったのだ―――――――

 

 ~> rails sはできたけどコントローラーで以下のエラーが発生(Argement Error)

f:id:piyomaru-bunbun:20180707201425p:plain

コントローラーにこんな記述してないんだが…?(゚∀゚;)

 

Rails5.0.1にしてbundle update => ついにエラー回避!!

最終的には以下の方法でこのエラーも回避できました。

 

  • エラー文 key must be 32 bytes でググる

qiita.com

  • 記事参考にGemfilerails 5.0.1にして bundle update実行

 

~> 無事表示できた!!

ヤタ━━━━━━ヽ(´∀`*)ノ ━━━━━━!!!!

 

 

まとめ

サーバー起動できなくて本当にどうなるかと思いましたが、諦めずに取り組んでよかったです!

 

エラーに1つ遭遇するたびに勉強になるし、解決すれば2倍も3倍も勉強になる。

なのでエラーもっと食べたいw

 

 

学んだこと:

Gemfile.lockはやたら削除しちゃダメ

 

 

 

ちなみに今回の過程で、他にも1~2個エラーが出ました。

コード合ってるはずなのにSyntaxErrorと言われ、そういえば!と思って自分の過去記事を見たら載ってましたよw

いや~書いててよかったなぁ~^^

nojishio-notes.hatenablog.com

 

その他参考記事:

qiita.com

blowitech.hatenablog.jp

qiita.com

 

Qiita記事だらけになったw

ここまで読んでくださり、ありがとうございました^^

非ITで1か月かかる仕事も、プログラミング学ぶとたった2日で終わる話

非ITの人間でも、プログラミングを学ぶことで毎日の仕事はこれだけ変えられる!

 

IT転職を目標にプログラミング学習中、のじしおと申します。

 

今の仕事は非IT企業の事務職ですが、

先日、そんな他分野の仕事の中でも日々の学習の成果が実感できた出来事がありました。

 

ということで、

エンジニアやプログラマでなくても、

日常生活にプログラミング(や関連の学習)が大いに役立った体験

の記事です。

 

 

概要と現場と作業内容

 どういう出来事なのかというと先日ツイートしたやつで、要約するとこんな話です↓ 

 

 

 職場のPCスキルレベル

 

  • 事務職だがExcelPowerPointなどまったく知らなくても、まぁやっていけるような仕事である(できるに越したことはない)

 

  • それゆえ30人弱いる事務職員の中で、コピペや保存などの超基本的なショートカットですら身についていない人も2~3割はいる

  (いちいち右クリック→コピーを押す、右クリック→貼り付けを押す、、とかやってるらしい;)

 

  • PC操作で「ここどうやるんだろう?」→「ググって調べてみよう」ができる人はおそらく5~6人くらいしか;;

 

 こんな状態です^^;できない人は何年経ってもできないまま。

どちらかというと私はプログラミングを知る前から、

わからないことがあったら調べる→なるほど!→活用できた!→嬉しい^^

という過程が好きな方でした。

そんな自分から見るとよくそれで平気だよなぁ…と不思議に思ってしまう。。

他の一般企業もこんな感じなのかなぁ?…いやいやさすがにもうちょっとマシなのでは?よく知りませんが…

 

無茶ぶりされた作業内容

 

こんな圧倒的スキル不足の集団に、ある業務が投下されました。

 

その内容とは…

  • データ入力作業:元画像データを複写し、それぞれ指定品番にリネームする
  • 計5.5万件、一人あたり2000件
  • 期限は約一か月後(一人あたり毎日100件片づければ終わる計算)
  • もちろん通常業務をこなしながら

 

 これは大変な無茶ぶり(笑)

 まともなショトカすら知らない人たちにとって、これはもう絶望でしかないですよ^^;

しかもこの業務振った部長による作業手順の説明があったわけですが、

その説明すら「データ1個1個を手作業でリネームしていく。慣れれば早いから大丈夫」

なんて有様でした(;'∀')

 

 日々のプログラミング学習の成果が日常にも反映できた瞬間

成果1:最初から作業のゴールを把握し、より早い解決ルートを模索できた

 

上記の無配慮(笑)な説明を受け、まず私が考えたことは、

 

  • 1個1個作業などせずとも、もっと効率のいい方法があるはず!
  •  この作業のゴールは何か?そこに到達するまでのやり方は工夫してみよう!
  • 要はファイルを(1つ1つ異なるが、ある程度規則的な番号に)リネームするのがゴールだ!

ファイルをまとめてリネームする方法、調べれば出てきそうだな。
そこから取り掛かってみるかな!

 

こんな感じです。

 

プログラミング学習を始めてから、分からない知識や単語、予期せぬエラーといった問題解決に当たる機会は日常茶飯事ですし、

解決するにはまずは調べてみる(1つの記事だけではなく他の記事も参考にする)のが当たり前の姿勢になってきます。

 

また、「同じ処理を行うコードでも書き方を変えるとだいぶすっきり書ける」というケースも学習の上でたびたび遭遇します。結果に至る方法はいろいろあるんだということ。

 

 

私の場合もともと分からないことは調べる習慣はありましたが、今回の問題に直面して、

 

★今ある知識ではできなくても、調べれば解決できそうだという見当と確信を持てた→作業のモチベを維持
 
★膨大な作業量を前にしても臆せず、解決に向けて多方面的な捉え方をしてみようという発想からスタートできた
 
★最初からある程度の解決の筋道を立てられた

 これらのことは、プログラミング学習を続ける中で得られた成果だと思います。

  

成果2:DLソフトやコマンドラインの使用に抵抗がなくなり、解決方法の幅が広がった

ファイルの一括リネームに当たりをつけ、楽して解決できる方法を模索。

いくつか記事を見た中で、この辺を参考にさせていただきました。

 little-hands.hatenablog.com

↑この記事は初心者でも分かりやすい^^この記事だけでも行けそうです。

 しかも家では普段Macのターミナル故に、Windowsコマンドプロンプトに馴染みのない自分には助かる♪(会社ではwindows使用)

 

 ファイル名やパス取得には…ほうほう!やはり一括でできるわ~^^

office-qa.com

 変換ソフトもあるんですね。こういうのも今後に応用利きそうです。

hep.eiz.jp

 

 このように、フリーソフトコマンドラインの使用も当たり前と思えるようになったことが2つ目の成果です。

プログラミング学習をする上でターミナルの使用は当たり前だし、新しいツールを取り入れてみるのもよくあること。

 

特にコマンドラインは、普段から触ってない人だったらかなり敷居が高く感じられるのではないでしょうか。

私も、もしプログラミングに出会わなかったら「なんだか黒い画面で専門的なことしてて難しそう」と避けてしまうと思います。

 

 

実際は、記事のようにコマンドラインに頼ることで作業は大幅に楽になる!

 

少しでもこういった知識があれば、問題解決の選択肢は大幅に広がることを実感できました。足りない知識は都度補って、蓄積していけばいい^^♪

  

成果3:「1日100件×1か月」の仕事が2日で片付いた

 ハイ。ということで方法を調べてやってみたところ、2日目にして余裕で自分の担当分を終わらせることができました。もちろん通常業務の合間の作業だけで。

こうやって、

何か問題が起きた時に自分で解決法を調べ

それを直面している案件に応用できて

結果、目的が達成できた瞬間には無上の喜びがあります。

 

これってプログラミングの本質ですよね^^
これが楽しくて今私はプログラミングに取り組んでいます。IT分野とは関係のない仕事へも、日々の学習の成果を示すことができて、「やっぱり毎日勉強していてよかったなぁ」と実感できました!

 

そしてExcelもなかなか侮れないですよ。自分もプログラミングに興味持ったきっかけの一つはExcelの存在もありますから(その話はまたいつか)。

 

 

成果4:アウトプットを意識、リファクタリング(改善)の意欲

 

そんなこんなであっという間に問題解決に至ったので、最後に

 

「この方法を他の人にも伝えられたらいいなぁ」

   ↓

「操作手順やポイント、自分用のメモをもう少し詳しく書いてみよう」

     ↓

「PC操作に慣れない人も多い。そういう人にも分かりやすい方法は?」

 

 というふうに人に教えること(アウトプット)を考えたのと、

そのために詳しく資料を書いたり、自分の行った手順の見直し、そして不慣れな人を考慮した作業手順の吟味(リファクタリング)をしてみようと考えました。

 

 成果2で挙げたように、選択の幅が広い自分向けならばコマンド活用などでもっと手っ取り早い方法を求めるのもアリです。

でも不慣れな人に理解してもらうことを考えると、

  • 効率を考えつつも、普段使ったことのないツールの使用は最小限に抑える
  • その上でどうしても必要な知識や操作には簡潔かつ分かりやすく説明を入れる

 この点を意識して教える必要があるなと思いました。

 

これを踏まえても先ほど紹介した記事コマンドラインの使用も最後に貼り付けして実行するだけだし、基本Excelで編集する方法だから、初心者にも易しいかと思われます。(これをベースにすれば今後も応用も利きますし^^) 

 

改めて思うのは、人に教えるのって難しいですよね。。2000件のデータ作業終わらせるより、その手順の説明資料を作る方が何倍も時間かかる(笑)

 

【追記】

後日、これを職場でプレゼンしました!!!

終始緊張し通しでしたが、職場の方々には「すげー(゚Д゚;;)ー!!」と言ってもらえてよかったです(笑)
たったこれだけの作業でも「もしやパソコンのプロですか…?」と高評価(誤解)を頂きましたので恐縮です(;'∀')

 

 まとめ:やっぱりプログラミングを勉強していてよかった!

何においても言えることですが、積極的に知識を身につけようとしない人の場合、自分が取り得る手段は非常に限られてしまいます。

与えられたものが唯一絶対だと思ってしまうことすらあるでしょう。

もし他の手段を探したいと思っても、今自分の持つ限られた知識の中でしか考えることができません。

 

 

今回の場合でも、件の業務を与えられた現場では

「こんな膨大な作業はとても無理。。。」と不満を口にしながらも

「でも仕事だし毎日コツコツやるしかない…」と

部長の説明通りの、1個1個手作業法で取り組もうとしていました。

 

 

私ももしプログラミング学習をしていなかったら、こんなに早く解決に至ることも、それどころか解決方法を見つけることすらできなかったかもしれません。

  

プログラミングを学ぶことによって普段の業務の大幅な効率化という大きな恩恵をもたらすことができました。

 

業務内容や転職云々に関わらず、どんな仕事をされている方でもプログラミングを学ぶ価値は大いにあると思います。

 

 

 今回のことでまた一つ学習へのモチベが上がりました。自分のスキルはまだまだですが、これからも一つ一つ積み重ね、自分の血肉に変えてゆけたらと思います。

 

ここまで読んでくださり、ありがとうございました。

ロードバイク・クロスバイク初心者でも○○をするだけでもっともっと自転車に乗りたくなる♪

現在、山梨という車社会の田舎に住みながら、車なしで生活しています。のじしおと申します。

維持費やら渋滞やらから解放された田舎暮らしは、さほど不便も感じず思いのほか快適です^^



車なしで田舎暮らし、始めた経緯などはこちら↓
nojishio-notes.hatenablog.com


ついでに、車を手放すだけで他に何の努力もせずお金が貯まった話。↓
nojishio-notes.hatenablog.com


上記の記事の通り、
初心者でもクロスバイクはとっつきやすく、田舎暮らしがさらに快適になりました。


ママチャリは値段はお手頃ですが車体が重いので、ちょっとした坂も結構大変だったりします。。
通勤通学に使うならロードバイククロスバイクがおすすめです。初心者なら特にクロスバイクがイチオシ^^

クロスバイクは、見た目がシティサイクルに近いだけでなく、価格帯がロードバイクMTBほど高額ではないため、最も気軽に始められるスポーツ自転車と言えます。

10km程度までの距離の自転車通勤では、クロスバイクを使用している方が非常に多いです。スポーツ自転車初心者の方に近年とても人気があります。普段着感覚でカジュアルに使うことができます。


引用元:
www.bike-plus.com


ところで、ロードバイククロスバイクの購入を迷っている方は、

価格の面で足踏みしてる方も多いのではないでしょうか?

ロードバイクの価格は10万円前後からスタートし、プロのロードレース選手が使用しているハイエンドのロードバイクは100万円以上するものも珍しくありません。

10万前後のロードバイクはエントリー用に位置づけられるため、アルミフレームのモデルが多くなっています。

カーボンフレームを採用したフレームは、20万前後から登場しコンポーネントもグレードアップされる傾向があります。


(中略)

クロスバイクロードバイクと比較すると、5万円台〜と、やや安めの価格帯から品揃えがあり、金額レンジが広い傾向があります。


引用元:
jitensha-hoken.jp



せっかく高い金額出して買っても、続けられなかったらどうしよう?


初心者がいきなりスポーツ自転車で毎日通勤に使うのは大変そう…





大丈夫です!(`・ω・´)b


私もクロスバイクに乗り始めてから1年になりますが、今までママチャリすらあまり乗ったことのなかったド素人です。
いまだにギアの切り替えもうまくないような初心者ですが、
普段何気なく行っている○○のおかげで自転車への愛着が格段に上がりました(笑)


自転車へのモチベーションはむしろ始めた頃よりもUPしました(゚∀゚)↑↑↑

不思議なもので、今は「整備とかカスタマイズとかそのうち自力でやってみたいな~」なんて思うようになってますよ。まだまだ初心者なのに(笑)


ということで、

クロスバイクの購入を迷ってる方や、

自転車持っているけど愛着はイマイチ、、、な方は

これをしてもっともっと自転車を好きになりましょう^^♪

○○をして自転車をもっと好きになろう!


では○○とは何なのか?







答えは掃除です。


なぁんだ、そんなこと?って思いましたか?
いえいえ、ロードバイククロスバイクのような自転車は特に、まめなお手入れが重要なのです。


と聞いて、初心者の方は

掃除って言っても、どこをどうすればいいか分からない…

パーツの分解するんだったら難しそうだし無理だよ…

といった不安がもしかしたらあるかもしれません。


が、
大丈夫です!(`・ω・´)b


初心者こそ、まずは拭き掃除からやってみましょう♪

お休日みの日とか、天気のいい日とか、あなたの気分の乗ってる日にちょこっと拭き掃除してみようかな~くらいの気持ちで構いません。
気軽に始めてみましょう。

次は道具とポイントについてです↓

拭き掃除のポイント

1.必要な道具: ウエス、これだけ!

自転車の拭き掃除にはウエス(自転車の拭き掃除用のクロス。布みたいな紙みたいな。)があるといいです。
Amazonとかホームセンターとかで安く手に入ります。


escapetrip.jp


私はフクピカを使ってます。これもホームセンターとかで買えます。

フクピカ12枚入り4.0 00468

フクピカ12枚入り4.0 00468


思う存分、ふきふきしましょう^^(笑)

2.そして感謝の気持ちをプラス

もう一つ忘れてはならないのが、気持ちを込めて掃除をすることです。

某●岡イズムかと思って侮るなかれ、
感謝の気持ちを込めることで、愛着が格段に上がります。珈琲でなくても(笑)

だまされたと思って「いつもありがとう」という気持ちを込めて拭き掃除してみてください^^

自分自身も不思議と嬉しい気持ちになりますよ♪

さぁやってみよう!実践編

ということで、実際私が拭き掃除したときの画像です。
さぁLet's TRY!!

ヽヽ ありがとう(^▽^)/ //
f:id:piyomaru-bunbun:20180502154532j:plain

ヽヽ ありがとう(*´ω`*) //
f:id:piyomaru-bunbun:20180502160004j:plain

ヽヽ いつもありがとう イェーーイ!!ヾ(*´∀`*)ノ♪ //
f:id:piyomaru-bunbun:20180502155000j:plain


掃除してるだけなのに結構楽しいんですよこれが(笑)
好きな音楽かけながらやるのもおすすめ。


おまけ。

今日の成果!!うむ!こんなに汚れが取れたぜいv(゚∀゚)v
f:id:piyomaru-bunbun:20180502155727j:plain


おわりに~上達への近道は、好きになることと見つけたり~

某●岡イズム、侮りがたし(笑)

感謝の気持ちを込めて掃除すると、自分もいい気分になれるので、もっともっと自転車に興味や愛着が出てきます。

それに掃除をすることで、「へー、ここの部分はこういうふうになっているんだなぁ」と
あなたの自転車のことを詳しく知るいい機会にもなります。


そうすることで「もっと自転車のことをもっと知りたい」「もっといろいろできるようになりたい」と思えるようになれば
もうあなたは初心者から一歩先に進んでいるでしょう。立派な自転車乗りの仲間入りです。


せっかく何万も出して良いものを買ったのですから、大事に長く乗り続けたいですよね。


もし時間が作れない時や気分の乗らないときはまた今度にすればいいし、

もしチェーンの注油や他のメンテナンスが分からなければ、近くの自転車屋さんに任せればいいんです。

初心者は初心者なりに、自分の可能な範囲で自転車に接していってください。

愛着が湧けば自然と自転車に詳しくなれますし、自分でできることが広がります。






自転車は奥が深くて、とても楽しいです^^


私もパーツ付け外しとかメンテとか、少しずつできること増やしていけたらと思っています。


ここまで読んでくださり、ありがとうございました^^

SyntaxError Invalid char `\x08' in expressionが出た時とりあえず試してみるとよいこと

RailsでSyntaxError  (syntax =構文 の意) はよく遭遇するエラーですが、

 

「スペルミスか何かかな?」と思ったら

空白やコメントアウトしてる部分でSyntaxErrorが出て

( °∀°;)えっ????

 

ってなりました;(笑)

 

SyntaxError で Invalid char `\x08' in expressionが出たときは、まずここを見直そう!

 

このエラーが出たときに

「該当コードのどこも間違ってないのにおかしいなぁ…」という時にも有効です。

 

 

すぐ直せるエラーですが、画面眺めてるだけでは少々発見し難い。。。

 

忘れた頃にまた同じパターンに落ちたらハマりそうなので、忘れずに書き留めておこうっと。

 

 

 

エラー内容:SyntaxError in 〇〇 Controller

 

私のエラー画面はこちら。UsersControllerでSyntaxError。

で、左画面コントローラ側の7行目、#新規作成 の部分でエラーだそうです。

コメントアウトしてるのに…ぐぬぬ

f:id:piyomaru-bunbun:20180425220954p:plain

 

 

Invalid char `\x08' in expression

SyntaxErrorが出るとこの文章も目にする。いつも読み流してたけど、せっかくなので少し理解しておく。

 

エラー・メッセージ

 (一部抜粋)

Invalid character

プログラム・メッセージ文字列の中に無効な文字があります。

Invalid expression

式データ要素は無効です。(IEEE488.2,7.7.7.2を参照してください。)例えば、括弧が対をなしていなかったり、文字が規格に違反しています。

引用元:

http://ena.support.keysight.com/e5071c/manuals/webhelp/jpn/product_information/error_messages/error_messages.htm#I

 

 

 無効な文字があるよって言ってたんですね。

でもコメントアウトしてるんだから、そもそも無効なのでは?

ヽ(*゚∀。*)ノアルェー?????

考えようとするとドハマりしそうです(笑)

 

さて解決にいきましょう。

 

Rails初心者はここを疑え!その①: #は半角変換× 半角入力○

 

 解決の糸口は、コメント記述時の#にありました。

 

まず自分の場合、コメント書くときには主に次の2通りのやり方をしています。

 

一つは、先に文章書いてから行選択 でコメントアウトさせる方法

(文章書く → Command+L → Command+/ )

 

 

もう一つは、まず#を書いてから文章を書きだす方法

 

 で、この#から書き始めていると(時々やってしまっているのですが)、

#を書く際、直前まで かな入力 になってたら(#あとにすぐまた日本語書きたいので)

#の入力を、かな入力で#を打ってから半角変換している

 ↑これがエラーになることがある(ただし毎回ではない)

 

この毎回じゃないというという点が難点^^;

エラー回避できるときもある、というよりむしろ忘れた頃にエラー認識されたりするので、コメントアウト部分でエラー出てたらまずはここを見直してみよう。

 

 

 

Rails初心者はここを疑え!その②:空白でSyntaxErrorが出たときは

 これでコメントアウト部分のエラーは回避できました。

そのあとに続けて空白部分でもSyntaxErrorが出たので、これも直してみます。

 

f:id:piyomaru-bunbun:20180425232843p:plain

 

 

エラーになってる空白の行を一回消して書き直してみる。

エラーにされている左画面の11行目、余計な空白は消してみる

f:id:piyomaru-bunbun:20180425234723p:plain

 

 これでどうかな?

   ↓

f:id:piyomaru-bunbun:20180425233815p:plain

 うむ!解決!^^

 

その③:とりあえずInvalid char `\x08' in expressionが出たらやってみるとよいこと

空白やコメントアウト部分でない箇所でも、Invalid char ~が出たら下記のように、とりあえずコードの空白部分を書き直したり、一文まるごとすぐ下などに書き直してみると、あっさりエラー回避できることもあります。

 

空白書き直すときは先頭や末尾も忘れずに書き直しましょう。

f:id:piyomaru-bunbun:20180709214238p:plain

 

 

 

まとめ

 

★コメントの#は半角入力で書くべし

 

★空白でエラーが出たら、空白を書き直すと解決できる場合もある

 

コメント部分や空白といった、一見処理に関係のないはずのところでSyntaxErrorになったときには、まずこのあたりをチェックしてみよう。

 

#の変換を疑うという発想は、画面とにらめっこしてるだけだとなかなか発見しづらいです。

 

なんとなくでも手を動かしてたら解決できるエラーではありますが、一つ一つ自分なりに理解して、糧にしていけたらと思います。

 

今後もたびたび遭遇しそうなエラーなので、またハマりそうになったら「そういえばこういう事例あったなぁ」と思い出して、次に活かしていきましょう~♪

 

ここまで読んでくださり、ありがとうございました^^

 

InvalidAuthenticityTokenから学ぶ エラー解決の考え方【Rails】

Railsでテキスト入力やチェックボックスラジオボタンなど、フォームのページを作って送信ボタンを押したときに出たエラー。Authenticity Tokenとな…?

 

プログラミング初心者ゆえに知識や経験がほぼなくても、こんなふうに考え方を工夫すれば解決できた^^というエラー備忘録です。

 

エラー内容:Invalid Authenticity Token

エラー画面↓ testコントローラのshowアクションでエラーね。ハイ

f:id:piyomaru-bunbun:20180416233513p:plain

 

↓ 入力フォームのHTMLファイル。右はそのフォームのブラウザ表示。

f:id:piyomaru-bunbun:20180416235612p:plain

 

↓ testコントローラのshowアクション部分。

 今回はモデル移行前で、まずコントローラに処理を書いています。

f:id:piyomaru-bunbun:20180416235740p:plain

 で。送信するとエラーになると。。

 

コード文眺めてるとなんとなく見当がつきそうではありますが、根拠となりそうなページ を探すことで初心者なりに、おおよそでも納得できるところまで理解を持っていこうと思いました。

 

 

エラー文の理解(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 の値を比較した結果、正しいと判断されるか

 

引用元:

shindolog.hatenablog.com

 

 あとこちらも

Railsで CSRFトークン検証エラーが出ることがある

Rails では、デフォルトで CSRF の対応がされています。
これは、セッション内に _csrf_token というキーで保存された値と、 POST 時に hidden field の authenticity_token で指定された値を比較することで、実現されています。
Ajax の場合には HTTP ヘッダ内に指定することもありますが、あまり関係ないので省略します。

要は、 CSRF トークンという、セッション毎にランダムに生成される値が、 POST で渡されてくる値と一致しているかを見ています。

 

引用元:

masamitsu-murase.blogspot.jp

 

ふむ…つまりものすごくシンプルに考えると…

postで送信されたときに値がおかしいっていうエラーのようだぞ!

(送信ボタン押してエラーが発生したことからも間違いないと見える)

 

推察してからコードを見なおす => 発見・修正・解決!

ということで先ほどのコードの見なおしをしたところ、ありましたー!!

 

HTMLテキスト入力フォームの性別欄と、

同じファイルの下の方で性別ラジオボタンを作ってるところ、同じgenderをキーにしていました。

f:id:piyomaru-bunbun:20180417003923p:plain

 

そしてコントローラ側でも(笑)

f:id:piyomaru-bunbun:20180417004110p:plain

 

 修正。

被っているとこ、どっちかのを消せばよいので、テキスト入力フォームの方の性別欄をなくしました。HTMLファイル・コントーラの処理のとこでgenderを含む記述をコメントアウト

これでgenderをキーにして値を送ってるのはラジオボタンフォームだけになりました。

f:id:piyomaru-bunbun:20180417004341p:plain

 

改めて送信ボタンをポチ!

 ↓

うむ!できた!!^^ 

f:id:piyomaru-bunbun:20180418233900p:plain

-------------------------------------------------------------------------------------------------------------------

※このエラー文についてもう少し説明:

変な値が登録されないようにデータベース側では、不正な値があった場合はそれを弾いてくれている(invalid)。

今回のように同じキーなのに別々の値を送信してたため、どれを登録していいか?どれを信じていいのか?(真偽性、信頼性が疑われる = authenticity)

 

とエラーを出しているようです。

 

 まとめ

 漫然とコードを眺めててもなんとなく予想がつくエラーですが、こうやって根拠となる記述を探した上で、改めて自分で考えてみることで今後のエラー対処の糧になりそう。

 考え方や着目するところ、などのコツを会得できれば広く応用が利かせられて大きな武器になると思います。思考ルートを切り開くって大事だなー

 

ここまで読んでくださり、ありがとうございました^^

 

Template is missingから学ぶ エラー解決への思考ルート【Rails】

 

Railsで「HelloWord」出そうとして速攻エラー出した超初心者。

見たことのないエラーでも、こういう考え方をすれば解決へのルートは導きだせる。

 

という非常に大切なものを学べましたので忘れず書いておきます。

 

 

 

エラー内容 :Hello World出そうとして即エラー「Template is missing」

Railsアプリ立ち上げたあと、ルートを指定してコントローラとビューファイルを追加。

さっそく「HelloWord」を表示させよう!と思ったら見たことのないエラーが発生。

え?え?(;゚Д゚)

 

エラー画面

f:id:piyomaru-bunbun:20180414223036p:plain

 

 

ルートだって指定してるし、

f:id:piyomaru-bunbun:20180414222402p:plain

 

 コントローラーにルートで指定した通り、indexアクションも追加してるし

ビューファイルもちゃんとuserlistのディレクトリに作成してるのに…

何度もやってる手順なのになぜ…と数分考えこんでしまいました;

f:id:piyomaru-bunbun:20180414223418p:plain

 

エラー文の意味・解決するための思考ルート

 Template is missingとは

エラー文の Template is missing とは簡単に言うと、ビューファイルが見つからない

というエラーだそうです。

                         テンプレートの呼び出し

 

Railsではアクションが呼び出された場合、何らかの結果を一度だけ利用者へ返す必要があります。アクションメソッド内で直接利用者へ結果を出力することも可能ですが、通常はビューに該当するテンプレートを使って利用者へ返す結果を作成し出力します。

 

アクションからテンプレートを呼び出す - Ruby on Rails入門

 

★★思考ルート:考えられること・疑うところ【重要】

 

確かに作ってあるビューファイルが「見つからない」とされている

    ↓

(ということは今、ビューファイルの中身はエラーに関係してないこともわかる

    ↓

ルート => コント―ローラ => ビューの流れなので、コントローラがビューを探してるあたりのエラーのようだ

    ↓

ではビューファイルはどうやって作成したか?

    

当該ディレクトリ内に、手動で新規ファイルを作成した

    ↓

手動ということは…間違いを起こす可能性がある

    ↓

ビューファイル作った部分を見てみよう!

ただしファイルの中身ではないということは…?

 

    ・

    ・

    ・

 

あったー!ファイル名間違えてたーー!

 

htmi という見つけづらいスペルミスw

f:id:piyomaru-bunbun:20180414231425p:plain

 

 うむ!解決!

f:id:piyomaru-bunbun:20180414231733p:plain

 

まとめ

あるはずなのにファイルが見つからないとされているとき、こんなふうに推測していく、よくあるパターンのようです。

手動操作の箇所はアタリをつけるとこなんですねー

そういえば自分の仕事でも似てる部分があるなぁ。

 

大変勉強になりました。こういう思考ルートは自分の中にもっといっぱい蓄えていきたいなと思いました。

 

 

ここまで読んでくださり、ありがとうございました^^