komagataのブログSearchkomagataのブログHomerubyActionMailer::PreviewでActiveRecord::FixturesSetが読み込まれなくなった5.2系では読み込まれてたんだけど、6.0.1にしたらデフォルトでは読み込まれなくなってるみたい。zeitwerkになったからかしら。手動でrequireすればOK。「開発環境のユーザーのパスワードって何?」みたいな情報の共有って面倒ですよね。any_login入れちゃうのがいいかも。any_loginを入れると画面の左下にアイコンが出てきて、そこをクリックするとユーザーが一覧できるプルダウンメニューが出てきます。それを選択するだけでそのユーザーでログインできるというもの。似た仕組みを用意してる人が多いとは思いますが、無いなら導入おすすめです。Sorceryなど色々対応してます。フィヨルドブートキャンプのアプリに入れてみました。+0000変数のように見える名詞メソッドフィヨルドブートキャンプでレビュー時に何度も指摘するのでまとめておきます。rubyではメソッド呼び出しにカッコ()が必須ではありません。カッコを使わずにメソッドを呼び出すと単に変数を参照しているように見えます。メンバ変数が呼べているように見えるrubyはこれを利用してアクセサを実現している。titleend↑この2つは同じ。これは自分のプログラムにも活用できる。メソッド名が名詞であって、そういうメンバ変数のアクセサとして動いているように”見えれば”問題ないメソッドになる。いうメンバ変数にみえる実際にはそんなメンバ変数はなく、メソッドがメンバ変数のフリをしているだけだ。クラスを使う人からみれば同じように振る舞うのであれば問題ない。複雑な処理を整理したいとき、これを使ってなるべくそのクラスのメンバ変数に見える名詞メソッドの形にしてみよう。たくさんのメンバ変数(に見える名詞メソッド)を扱う少数のメソッドという形になると全体が把握しやすくなる。考えなければ行けないので複雑だから。注意ただ、メンバ変数のように見えるメソッドが派手な副作用を持っている時、使う人から見るとエゲツない罠となる。+0000rubyのinitializeには何を書くべきかこれまたフィヨルドブートキャンプの課題で何度も指摘しているのでこちらにまとめておきます。可読性(他の人が読んだ時のわかりやすさ)の面から言うと、initialize(初期化)と言える処理のみ書くべきです。そのクラスがインスタンスになっているとき、そのインスタンスが備えているべき変数の状態などを設定しておくべきです。newしただけなのに初期化とは言えないことをやっているとそのクラスを使った人はビックリするし、勘違いから事故が起きやすくなる。機能の面から言うと、大抵は受け取った引数からメンバ変数を設定する程度をするのが一般的です。newしただけで何か文字を出力してたりすると、そのクラスをテストする時に困る。+0000なぜrubyでget_xxxというメソッド名をあまり使わないかこれまたフィヨルドブートキャンプで何度も説明しているのでまとめておきます。set_titleというメソッドを作らなきゃいけないのは冗長。rubyではアクセサというが、メンバ変数と同名のメソッドができる機能がある。:titlec#やswiftなどでもプロパティという仕組みで同様のことができる。見方を変えると、titleにget_titleというメソッドをあてがうというのは変数をメソッド化(=動詞化)するために無理やりgetを付けていることになる。メンバ変数のように振る舞うメソッドrubyではメソッドを呼び出すとき必ずしも()を付ける必要がない。カッコなしこれにより、本来動詞であるべきメソッドを名詞にして、カッコなしで呼び出すとメンバ変数であるかのようにみえる。メンバ変数が呼べているように見えるrubyはこれを利用してアクセサを実現している。titleend↑この2つは同じ。アクセサの考えを自分のプログラムに活用するこれは自分のプログラムにも活用できる。メソッド名が名詞であって、そういうメンバ変数のアクセサとして動いているように”見えれば”問題ないメソッドになる。いうメンバ変数にみえる実際にはそんなメンバ変数はなく、メソッドがメンバ変数のフリをしているだけだ。クラスを使う人からみれば同じように振る舞うのであれば問題ない。複雑な処理を整理したいとき、これを使ってなるべくそのクラスのメンバ変数に見える名詞メソッドの形にしてみよう。たくさんのメンバ変数(に見える名詞メソッド)を扱う少数のメソッドという形になると全体が把握しやすくなる。考えなければ行けないので複雑だから。メソッド名の原則を外れていてるコードを見たとき他人のrubyコードを見たとき「メソッドなのに動詞じゃない」と思ったときはこのテクニックが使われてないか考えてみよう。自分のコードにも取り入れるとわかりやすいコードになるかもしれない。20191日目始まりました。会場はクッソでかいJetbrainsのイベント会場。(普段何に使ってるのコレ・・・?)発表は1時間毎でお昼や途中休憩は特にスケジューリングされてなく、勝手に休んだり勝手にお昼食ったりする感じらしい。発表内容はEurukoよりはテックよりが多い。Martiansみたいなグローバルで有名な会社の人が多くて、ロシアの会社の人は少ない感じ。Googleが使われて無くて全部Yandexとか、地下鉄で荷物チェックされるとか、みんな休日にはコード書かないしPC開かない?などなどロシア情報を交換しました。先週、asakusa.rbに初参加させてもらいました。「あ〜、俺はRubyに食わせてもらってるのに何の貢献もできてない、フリーライドしててもうしわけないなあ〜」と思ってました。organizationのIssueをみて何か俺にもできる作業は無いかなと探していました。その中でloggerにPRを送ってみたりしつつ、ruby作業の気合を入れるためにasakusa.rbに初参加させてもらいに言ってきました。結果、行ってよかったし、これからも行こうと思いました。rubyのコミッターがたくさんいて生で話せるというのは日本に住んでる圧倒的メリットだなーと思います。「うわ、本場の(rubyの)やつがきた、この機会になんか聞いときたい!」ってなるでしょ。「自分も頑張らねば!」と思うのでruby心が高まりますね。organizationに移ったTryRubyが日本語だと見づらい(右から読む言語でも見づらいらしい)をどうにかするのをやりたいなとおもいます。+0000RubyとRailsの学習ガイド事前にレビューさせていただいた、技術書典6で配布されたRubyとRailsの学習ガイドを@igaiga555さんからいただきました。みせこれからrubyの勉強を始める人に最適のガイド。傍らに置いておけば、わからない用語が出てきたときには「これに載ってたやつだ」となるかもしれない。見て思ったのはむしろRuby・Railsをキーワードに勉強始めてる人の方が役に立つかもしれないということ。「これからどの方向に深めていけばいいのか」がわかりやすいので。これとRuby超入門を読めばかなりスムーズなスタートがきれるんじゃないでしょうか。フィヨルドブートキャンプでは新しく来る人に配ろうと思っております。+0000Railsエンジニアとして就職できるレベルとは仕事でフィヨルドブートキャンプというRailsエンジニアになるためのスクールをやっています。「どのレベルになったら就職できるの?」という点がイメージできないと、就職したい人側、紹介される企業側の双方にとってわかりづらいなと思ったので明確にしておきたい。「少しでもプラスの戦力として計算できる」というものです。「Issueを一人でこなせる」といっても良いかもしれません。「は?みんな10の戦力持ってるところに1とかじゃ困るんだけど?」と思うかもしれませんが、Railsプロジェクトにとってほとんどの人類は1の戦力も無くて、マイナスです。Railsチュートリアルを終わったばっかりで実務レベルの開発したことないぐらいの人もマイナス戦力です。「教えるのに大量のパワーが割かれて、居ない方がプロジェクトが進む」という状態がマイナス戦力です。Railsプロジェクトのリーダー的な役割をした人なら感覚的にわかると思います。「Rails経験無くてJava経験だけの人が2人送られてきても困るなぁ・・・」これがマイナス戦力です。「多少の教育コストはかかるけど、レビューをしっかりやればトータルで見れば助かる」このレベルがプラス戦力です。😅プラス戦力になるための工夫このイメージが固まってからカリキュラム終盤の内容も変わりました。弊社プロダクト(怖話など)へPRを送って5回採用される。Webアプリ設計のカリキュラム追加メンターとペアプロするカリキュラム追加。Railsの機能を一通り覚えただけじゃ駄目で、実際のプロジェクトに入るには必須の知識がかなりあります。弊社としては一般的なプログラマー新人研修もやっているのでその中でこの辺ももっと固めていきたい所存です。+0000holiday-jpのアイコン@machidaさんがholiday-jpのアイコンを作ってくれました。Holidayのリニューアルでholiday-jpを久しぶりに触ったらAPIが糞過ぎた。