Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

タグ

ブックマーク / qiita.com/jkr_2255 (4)

  • delegateを使って、別クラスへの切り出し - Qiita

    Railsのリファクタリングの際に、クラスを細かく分ける手段として、Railsのdelegateを使ってみました。 直しづらい、クラスの長さ プロジェクトRubocopを入れて、ヤバそうなコードをチェックしているのですが、書式の問題はものによっては自動解決も可能ですし、長すぎるメソッドも、どうにか分けられるものです。 一方で、「長すぎるクラス」というのは、そう簡単に分割できるものではありません。クラスは最終的に1つものとして動作させることになるので、メソッドみたいに「一部切り出す」というのが、あまりスッキリしません。 Moduleは使える、けど もちろん、一部を別なモジュールに分けてincludeする、という手段はあります。 Railsのモデルではhas_manyとかvalidatesとか、DSL的なメソッドを多用しますが、これに関しては「クラスに直接書く」あるいは「Concernのin

    delegateを使って、別クラスへの切り出し - Qiita
    fuyu77
    fuyu77 2021/09/16
  • Railsの.whereに渡せるもの - Qiita

    RailsのActiveRecordで条件を絞るメソッドといえば.whereですが、いったいどれだけの形式の値を渡せるのでしょうか。 なお、手元にあったという理由でRails 4.2.7.1で検証を行っています。 whereの定義場所と、処理の流れ まずは、ActiveRecord内部でのwhereの処理を追いかけてみることにします。 where自体はActiveRecord::Relationのメソッドですが、実体はinclude元のActiveRecord::QueryMethodsにあります。どのように処理が進むのか、流れを辿ってみました。 引数がハッシュだった場合、(必要なら)JOIN先のreferencesをセットしておく build_whereで条件を整えておく where_valuesに整えたものを追加 whereを実行した段階ではここまでですが、実際に取り出す段となると、以

    Railsの.whereに渡せるもの - Qiita
  • setTimeout(...,0)などの使いドコロ - Qiita

    0ミリ秒、お待ちください〜 クライアントサイドのJavaScriptを使っていると、setTimeout()はそこそこ使う機会が来る関数かと思います。これは、 実行する関数 待機時間(ミリ秒単位) という2つの引数を取って、指定時間後に関数を実行する機能です。…そこまではいいのですが、ときどき第2引数に0を指定するような使い方があります。「0ミリ秒に実行」だと、そのまま実行しても何も変わらないような気がするのですが、いったいどういう意味があるのでしょうか。 JavaScriptはシングルスレッド postMessageやWeb Workerといった一部の機能を除いて、ブラウザ上のJavaScriptはシングルスレッドで動いています。つまり、関数に入っていないトップレベルコードなら読み込まれた時点から実行完了するまで、コールバック関数であれば呼び出されてからその関数を抜けるまで、そこにあるコ

    setTimeout(...,0)などの使いドコロ - Qiita
  • PolyfillとPonyfill - Qiita

    JavaScriptを書くにあたって、未だにブラウザによっては存在しない機能を考慮せざるを得ない状況が続いています。そこで取る対策として、PolyfillとPonyfillがあります。 気の抜けない、ブラウザごとの差 最近でこそブラウザは強制バージョンアップするものが増えてきましたが、もはやバージョンアップすることのないIE 11、そしてOSとセットでしかアップデートできないiOSのSafariなど、常に最新といかない環境も残り続けています。さらに言えば、JavaScript自体もECMA 201xというように、毎年バージョンアップし続けるので、ブラウザごとにそれをキャッチアップできるタイミングも違ってきます。 ということで、どこまで行っても「ブラウザごとの実装差」は残り続けることとなってしまいます。 Polyfillのメリットと欠点 Polyfillとは、「標準となったメソッドが存在しな

    PolyfillとPonyfill - Qiita
  • 1