SakuraWi - BLog

WEBエンジニア。聴いたお話をまとめておく倉庫的な。スタックストックスタック!

controllerで生成したインスタンス変数をテストで参照したい場合

controllerの内にて以下のようにインスタンス変数を扱っているとき、 テストでインスタンス変数を呼び出したいときがある。

def create
    @shampoo = Shampoo.new(shampoo_params)
    if @shampoo.save
...
end

のように扱っていたインスタンス変数の@shampooをテストで参照したい場合は テスト内で、assigns(:shampoo)と書くと参照することが可能になる。

pathに渡してあげたい場合などに使うと思うので、覚えておきましょう!

RailsTutorialでも出てきた内容ですね。

計画通りに進める能力

計画は本当に計画通りにいかないものだ! 見積もり力、論理的な思考と経験からこれくらいの時間があれば、できるだろうと計画をたててきっちりやりきる力をつけたい。

計画力もある程度大切だけど、やりきる力も大切だ。

最近はプログラミングで自分で作りたいものを作ってみるという研修をしているが、 やったことのないことに対してはやっぱり大きな抵抗を感じてしまう。

そこをうまく飛び込んでいけるといいなーと思いまする。 現実世界の行動とまたちょっと違う感覚がある。

slack API

この記事、とっても簡単でなかなか応用がききそう!!!

【第一回】超簡単!RubyでSlack Botを作る方法 - Studio Andy

7月も終わりが目の前に

毎日コードを書いているわけですが、いろんな環境を扱うことが難しいなと感じております。 production環境のエラーはなかなか対処が難しい!!

今日はユーザ認証のMailerあたりの実装をして、なんとか動くようになりました。やったぜ。

かなり基礎的な内容を実装するという感じで進めていて、 ちょっと新しいことに挑戦できていない気味かな?という感じ。

Rspecを用いたテストも並行して書いているのですが、どこをテストするのか、などなどがまだ全然ですね。 経験によってどんどんカバーさせる予定。

水飲みまくり生活

結局水が最強 500mlのやわらない入れ物に入ったガイザー以上のものはない。

プレゼン用メモ

なかなかこれは発表に使えそうですね。 keynoteなどにシンタックスハイライトしたコードを貼り付ける方法

シンタックスハイライトしたコードをスライドに貼り付ける - taku_okaのブログ

尊敬する人の新しい門出

7月21日の金曜日に、僕の尊敬している瀬津勇人さんがニフティ株式会社をご退職されるとのことでパーティが
東京カルチャーカルチャーにて行われ、参加してきました!!!

瀬津さんから招待されたこともあって、退職パーティに参加してきました。

集まった人は120人以上で、退職にあたってこんなにもたくさんの人が集まってくれる人望がすごい、と思いました。

自分もこうなりたいとまたまたおもうきっかけになりました!

最後の挨拶をきいていて、会社に雰囲気やブランドを生み出すことってものすごく大切で、
きっとものすごく難しいものなのだと思います。
そんな中心に立って、文化を作ってこられた経験をされてきている方はそうそういらっしゃらないと思うので
吸収しよう!と考えております。

これまでにもたくさんの偉業を成し遂げてこられた方だと思いますが、今後もお付き合いさせていただこうと思っております!

土日

土曜日と日曜日は、友人と伊豆半島へ旅行(?)に行き、疲れて帰ってきましたw

大学時代からずっと仲良くしていたグループで、4年間ずっといろんな場所で遊びに行ったメンバーで、
タイに旅行にいったり、島根や諏訪湖、富士山登頂、ヒスイ海岸などなどいろんなところへ行ったメンバーです。

そんな友人たちと社会人になってひさびさに集合。 みんなまぁ、3ヶ月なんでほぼそのままでした。

バカできるメンバーってよいですね。

なんだか毎週熱海とか伊豆系にいっているぞ・・・笑

カーズ3

みてきました。 感動ですね。 みてくださいな。

掴んだ栄光と、その先にどんな決断が待っているのか。 結構テーマは深い内容だと思います、ちっちゃい子がみても大丈夫なのか?

nikonのCM?

映画館でみたnikonのCM作品?がなかなかによかったです。 youtubeで探したけど見当たらない。

ヒットな予感

化物語の監督の人の新作らしい。

いうて全部みていないけどw

映画『打ち上げ花火、下から見るか?横から見るか?』

ポケモンGOと過ごしたアツい夏

ポケモンGOのリリース日は、2016年7月22日です。
そうです、明後日一周年記念なのです。

ということで、ポケモンGOの思い出話を書きます。

あの衝撃を忘れはしません。
社会現象となったスマホゲームといっても過言ではないでしょう。

当時、大学生だった自分は、Twitterにてリリースを知り、すぐさまダウンロード。

なにができるかもわからなかったため、起動したまま自転車にのって、近所を少し回り始めました。
すると、ポッポ、イーブイを捕まえることができました。

っだこれ、やべえ

と思ったのを覚えてます。

ポケストップを回した時の快感。

少し遠出してピジョンと遭遇した興奮。

そのまま学校へ行く途中に出会ったカイロス。
ボールがぐらぐらする部分でフリーズしてしまい、ゲットにならなかったバグ。

興奮は冷めることはありませんでした。

そのまま、立命館が大学へ向かいました。
そこには、無数のポケモントレーナーたちがいました。
スマホ片手に学内を歩き回る生徒たち。

僕は感じました、

っっべえな!!

BKC(立命館大学の滋賀のキャンパス)は洞窟扱いなのか、ゴルバッドの巣窟でした。
リリース3時間ほど、ズバットばかりでるBKCではすぐにゴルバッドに進化させることができて、
「オレのゴルバッドCP350あるでw」

ポッポのCP30とかを持っていた自分は思いました。

っっべえ、つええな!

それから、友人たちと合流しました。
「どんだけやった!?何捕まえた!?」

何もネットにも情報が出回っていない状態での、手探りでやるゲームの感覚でした。

それから出会った人数人で、学内をひたすらに歩き回りました。二時間ほど歩き回ったと思います。

やはり、興奮は覚めませんでした。

車の免許を手にしていた自分は、それから5日間は車を運転しまくって、各地へポケモンを入手しに行きました。

ポケモンの巣の情報がまだない時代、車に友人をのせ、スマホを渡してゲットを任せて
ひたすらに車を走らせました。
たまごの孵化と、ポケモンを探すためです。

公園につくと、そこにはやはり無数のトレーナーたちがいました。
2時間ずつ公園を回ったりしながら、時に飯を食べ、時にカブトをみつけて大歓声をあげ、
カモネギのためにUターンをし、ミニリュウに夢を感じ・・・。

気がつくと、ネットにポケモンの巣の情報とカイリューが最強であるということが判明していました。

京都府、円町公園(だったはず)

そこに、いる。

夜通しでミニリュウを捕まえ続け、夜1時から朝の7時まで、ポケサーチとともに、数多くのトレーナーとともに走り続けました。

・・・カイリューが作れていました。

圧倒的な達成感とともに、車を走らせて帰ったのでした。

公園にはパトカーがきていて、無断駐車をしている車を追い払ったりもしていました。

f:id:Saku-Saku:20170721021735p:plain
7月26日の京都遠征の時のスクリーンショット。
花が舞い、人がごったがえす。まさに祭りでした。

リリース4日間で、レベル21に達していた人は、日本でも結構上位だったと思います。

f:id:Saku-Saku:20170721022025p:plain
今は亡き、ポケヴィジョン。

それから、東京へ就活でくる際には、友人宅に泊めてもらって、ひたすらポケモンGOでした。

不忍池、就活そっちのけで毎日夜中三時間。
ここもまた、ミニリュウの巣なのでした。
夜中にもかかわらず、不忍池には、道いっぱいの人がいました。
ミニリュウの出現を告げるポケサーチの通知がくると、人々は群をなして移動をしていました。

時に、ハクリューが出現しようものなら、500人ほどの人が走るのでした。

きわめつけは、ラプラスです。
お台場に遊びにいっていたときのことでした。

目の前を大学生3人がとんでもない速度で走り抜けて行きました。

なにかがいる。
そう感じました。

スマホをみると、そこにはラプラスの影がありました。

ラプラス

f:id:Saku-Saku:20170721022651j:plain
まじ病気。

サイドンを捕まえるために東大付近から20分歩いたりもしました。

f:id:Saku-Saku:20170721022311p:plain
カナダでケンタロス。

f:id:Saku-Saku:20170721022217p:plain
NYでもやりました。

ポケモンGO plusも早朝から2時間並んで買ったりしました。

だいたい、10月とかもう少しまでやっていたと思います。
最終的には、日本国内でカイリキー以外を捕まえて残り1匹までやりこんでいました。

今のデータ
f:id:Saku-Saku:20170721023205p:plain 開始日がちゃんと刻まれています。

f:id:Saku-Saku:20170721023159p:plain

350kmほどは移動していたようです。

シカゴでイベントがあるそうです。
当時の自分だったら、行ってたなw

f.hidden_fieldとhidden_field_tagの使い方【Ruby on Rails】

f.hidden_fieldとhidden_field_tag違い Ruby on Railsでは、form_withform_forタグの中でパラメータをユーザが直接フォームから入力させないまま、値を受け渡したい時に使用するものとして

hidden_fieldhidden_field_tag

があります。

controller で保持している user_id を次のアクションに渡したい、といった時に利用します。 formではユーザの名前などの情報を入力してもらって、裏側でuser_idを渡すイメージです。

使い方に少し注意が必要であるため、使用方法をまとめました。

また Ruby on Railsチュートリアルや初心者にとってこのふたつの違いはわかりにくいですし、混乱すると思うのでなるべくわかりやすく解説しようと思います。

対象読者

  • Rails触り始めた人、入門者
  • フォームを実装している人

f.hidden_fieldとhidden_field_tagの使い方

おおまかな違いは、 form_withやform_forの内部で使用するか、単体で使用するか、という使い方にあります。

form_withやform_forで渡すインスタンスがある場合(もしくはそれらのヘルパーを使っている場合)は、f.hidden_fieldを使います。

一個だけパラメータを他のアクションへ単体で渡したい時は、hidden_field_tagを使います。

hidden_field_tag は独立して利用できます。

hidden_field_tagについて

hidden_field_tagの方が使用方法はシンプルです。

<%= hidden_field_tag :email, @user.email %>

上記では、emailというパラメータに、 @user.emailの情報を渡しています。

rails serverで立ち上げているターミナルで、送信されたパラメータをチェックしてみましょう。

Parameters: {"utf8"=>"✓", "authenticity_token"=>"estvl2Qof29PNJrhiq59BmjeFMlVfXI4JqlzAY3oC/AyP3gTOKhj4VT5fyIm8FMPUEVTZ7rRHJ0LoYTVLaa2Zw==", "completed_item"=>{"title"=>"aaa"}, "email"=>"aaa", "commit"=>"できた!"}

"email"=>"aaa"といったようにパラメータが送信されているのがわかります。

公式ドキュメントの例はこちら。

hidden_field_tag 'tags_list'
# => <input id="tags_list" name="tags_list" type="hidden" />

hidden_field_tag 'token', 'VUBJKB23UIVI1UU1VOBVI@'
# => <input id="token" name="token" type="hidden" value="VUBJKB23UIVI1UU1VOBVI@" />

hidden_field_tag 'collected_input', '', onchange: "alert('Input collected!')"
# => <input id="collected_input" name="collected_input" onchange="alert('Input collected!')"
#    type="hidden" value="" />

第一引数に:idのようにシンボルで記述します。第二引数はvalue、つまり渡したい値になります。 HTMLとしての出力も書かれているので非常にわかりやすいです。

hidden_field_tag どのようなシンボルに(第一引数)、どの値を渡すか(第二引数)、という記述ですね。

注意点

params[:email]のようにハッシュを使って値を取り出す際に注意が必要です。

以下のコードはRails tutorialの10章より抜粋

<%= form_for(@user, url: password_reset_path(params[:id])) do |f| %>
      <%= render 'shared/error_messages' %>

      <%= hidden_field_tag :email, @user.email %>

      <%= f.label :password %>
      <%= f.password_field :password, class: 'form-control' %>

      <%= f.label :password_confirmation, "Confirmation" %>
      <%= f.password_field :password_confirmation, class: 'form-control' %>

      <%= f.submit "Update password", class: "btn btn-primary" %>

このように<%= hidden_field_tag :email, @user.email %>では、
params[:email]で中身を参照できます。

hidden_fieldについて

次はform_withの中で使うケースが多いhidden_fieldを見ていきましょう。

こちらはhaml形式の記述になります。

hidden_fieldは以下のように、

第一引数にパラメータ名(シンボル)、第二引数部分にvalueとして受け渡す必要があります。

= f.hidden_field :shampoo_id, :value => shampoo.id

もしくは @shampoo をform_forで渡しているのであれば、

= f.hidden_field :shampoo, :value => shampoo.id

でも大丈夫です。

公式ドキュメントによると、

hidden_field(:signup, :pass_confirm)
# => <input type="hidden" id="signup_pass_confirm" name="signup[pass_confirm]" value="#{@signup.pass_confirm}" />

hidden_field(:post, :tag_list)
# => <input type="hidden" id="post_tag_list" name="post[tag_list]" value="#{@post.tag_list}" />

hidden_field(:user, :token)
# => <input type="hidden" id="user_token" name="user[token]" value="#{@user.token}" />

となっています。 form_forの部分で@userなどといったインスタンスを渡しているので、そのインスタンスの属性と値を指定してあげます。

()を省略するとスマートな記述に見えますね。

= f.hidden_field :shampoo_id, value: shampoo.id

まとめると、f.hidden_field そのインスタンスの属性、渡したい値は何か、という書き方ですね。

注意点

こちらの記述だと、paramsで引用する際には
params[:user][:email]に保存されます。

理由は、パラメータがネストしているためです。userが持つ、emailは、中身とかけば伝わりやすいでしょうか。

Userのモデルのnameカラムや、emailカラム、それぞれに受け渡したい場合は、こちらを利用するとわかりやすいでしょう。

f.hidden_fieldとhidden_field_tagのまとめ

Ruby on Railsを使った時のf.hidden_fieldとhidden_field_tagの違いをまとめました。

form_withを使っているviewファイルではf.hidden_fieldを利用することがほとんどで、それ以外ではhidden_field_tagで個別にパラメータに好きな情報を送ることができます。

ユーザに直接入力させることなく何かの値の受け渡しを行いたい場合は利用してみましょう。

公式ドキュメント

詳しい内容は公式ドキュメントを参照しましょう。
Ruby on Rails API

参考

qiitaの記事も参考にしました。
Ruby on Rails - hidden_fieldの使い方 - Qiita

歯が痛い気がするという

なんだか歯が痛いような、そうでないような・・・という感覚ってありますよね。 なうです。

いや多分痛くないんだ、大丈夫だ、そういうことなんか今までだって何度もあったじゃないか。

どうも最近体調が優れませんな。 きちんと寝ましょう。

bitcoin

どうも、8月1日に大きな動きがあるようで。 分裂って呼ばれているみたいですね。

ぶっちゃけさらっと読んだだけではまったくわかりません。

ともあれ、ブロックチェーンの根幹のシステムの部分で変化がちょいあるって感じなのでしょうか・・・。

技術的な変革に、賛成と反対があってそれに応じて対応もかわるってな理解です。 薄いです。笑

【技術ブログ】2017/8/1にビットコインに何が起こるのか?BIP-148の意図していることについて | coincheck(コインチェック)