タグ

ブックマーク / qiita.com/joker1007 (11)

  • 俺が悪かった。素直に間違いを認めるから、もうサービスクラスとか作るのは止めてくれ - Qiita

    ちなみに、最初に結論だけ言っておくと、まずSandi Metzの「オブジェクト指向設計実践ガイド」を読め、という話です それだけで終わってしまいたい気持ちはあるが、不親切過ぎるしもうちょっとRails向けの話を書こうと思う。 ただ言いたいことは、よく分かってないのに使うのは止めろということ。 自分もで書いたりした手前、それが参考にされた結果なのかもしれないが、世の中には当に酷いクラスが存在するもので、雑にサンプルで書くと以下の様な感じのコードが存在したりする。 class HogehogeService # Hogehogeはモデル名まんま def process(hogehoge, option_a: nil, option_b: nil, option_c: false) history = hogehoge.histories.last unless hogehoge.activ

    俺が悪かった。素直に間違いを認めるから、もうサービスクラスとか作るのは止めてくれ - Qiita
    masa0x80
    masa0x80 2016/12/17
  • [小ネタ] Rubyのキーワード引数で受け取った値をHashとしてまとめて取得するgem - Qiita

    最近、仕事が忙しくて、小物のgemを作るというoutputが無かったので、思い付いたものを無理矢理形にしてみた。 タイトル通りで、キーワード引数で受け取った値をHashとしてまとめて取得するgem。 どういうものかというと以下の様な感じになる。 joker1007/given_keyword_args require 'given_keyword_args' class Dummy def dummy(foo:, bar: "bar", **options) given_keyword_args end def dummy_with_rest(foo:, bar: "bar", **options) given_keyword_args_with_rest end end p Dummy.new.dummy(foo: "foo", other1: "other1", other2: "ot

    [小ネタ] Rubyのキーワード引数で受け取った値をHashとしてまとめて取得するgem - Qiita
  • Railsのurl_forを30%高速化するgemを作った - Qiita

    まあ、タイトルは若干釣りで、特定のユースケースにおいて3割程度の高速化が見込める、というだけです。 joker1007/curl_escape: This gem provides fast URL escape by libcurl. 以下、実装経緯。 Railsのurl_forを辿っていくと、最終的にクエリパラメーターとして渡したハッシュやらArrayやらに対して、Object#to_queryを発行します。 このObject#to_queryの実装は、ほぼCGI.escapeの実行です。 やたらとlink_toの数が多くて、クエリパラメーターをそれなりに渡している、というページを表示しようとすると、割とこの処理時間が馬鹿にならない感じになってきます。 ということで、CGI.escapeを早くすれば、ちょっとはマシになるんじゃないかと思いました。 しかし、CGI.escapeの実装をR

    Railsのurl_forを30%高速化するgemを作った - Qiita
  • Sprockets再考 モダンなJSのエコシステムとRailsのより良い関係を探す - Qiita

    すいません。締切守れませんでした…。 やっぱ、java-jaの忘年会の翌日は辛い…。 はじめに Webシステムを開発していると切っても切れないのがJavaScriptです。 Railsはかなり早い時期からalt-JSや結合、minify等を組み込めるようにフレームワークにそれを取り入れてきました。 それを支えているのがRails3.1から導入されたsprocketsです。 それに伴なってJSのライブラリをどうやって管理するかという点について、独自の路線を取ることになりました。 JSのライブラリを同梱したgemパッケージにラップしてrubygemsとして管理する方法です。 ある程度は上手くいっていたし、今もその流れは続いているんですが、時々問題になることもあります。 例えばメンテナの対応時期がズレてて古いバージョンのままだったり、似たようなgemが乱立してややこしくなったり。(backbon

    Sprockets再考 モダンなJSのエコシステムとRailsのより良い関係を探す - Qiita
  • FactoryGirlのtransientとtraitを活用する - Qiita

    FactoryGirlでテストデータを定義する時に、transientとtraitを活用すると色々捗るという話。 transientは実際に作成するデータと直接関係無い新しいattributeを定義する機能。 そこで定義されたものは実際のmodelにはセットされないしattributes_forでも出力されません。 何のために使うかというと作成時に挙動を変更するためのフラグや追加データとして利用するのが一般的です。 traitは属性の定義を一纏めにして名前を付けられる機能です。 parentを指定したfactoryの継承とは違い、traitは単体ではfactoryとして機能しません。 あるfactoryの特定の状態に名前を付けて、付け外しできるようにする、というのが主な使い方になります。 例えば、あるfactoryをある時はadminある時は非adminで作りたい時等に有効です。 個人的に

    FactoryGirlのtransientとtraitを活用する - Qiita
  • Rails4.2のweb-console上で直接Rakeを実行する - Qiita

    ActiveRecord::PendingMigrationErrorでエラー画面に飛んだ時、下に出ているweb-consoleのreplからrake db:migrateが実行できれば便利なのに、という話をしていて、ほぼそれだけのためにgemを作りました。 joker1007/web-console-rake Gemfileに書いておくだけで、web-consoleのreplでrake(taskname)というメソッドが使えるようになります。 オプションを渡せばspringにも対応します。 rake "spec"とかやればテストも流せます。(意味は余りない) 中身はめちゃくちゃダーティハックな感じで、ちょっと面白かったw

    Rails4.2のweb-console上で直接Rakeを実行する - Qiita
  • FormオブジェクトのURLの渡し方について - Qiita

    Rails Advent Calendarの2日目の記事である Rails4でFormオブジェクトを作る際に気をつける3つのポイント|江の島エンジニアBlog を読んだんですが、ちょっと気になる所があったんで突っ込みを入れてみる。 モデル層であるFormオブジェクトにURLを返すためのメソッド定義するのは、あんまりよろしく無いんじゃないかと思う。 そもそもurl_helperをちゃんと動かすためにはホスト名やポート等のリクエスト情報が必要で、この例の様に相対パスを出力するだけなら使えなくもないけどモデル層から呼ばれることは、余り想定されていない。 デコレーター層に生やすか、そもそも組込みのヘルパーを使うべきではないかと思う。 ちなみにform_forヘルパーが中で使っているのはpolymorphic_pathというヘルパーで、地味だし自分も良く忘れるのだが、この例ではこれがそのまま使えるは

    FormオブジェクトのURLの渡し方について - Qiita
  • これを読むとRSpecの裏側がどうやって動いているのか分かるかもしれないぜ - Qiita

    これはTokyuRuby会議08にて発表した資料を元にQiita向けに再編集したものです。 元々Advent Calendarと共用にしようと思って、どう考えても5分で話せない資料でLTしたのでした。 最初に RubyのテスティングフレームワークとしてはトップクラスにメジャーなRSpecですが、内側の実装が黒魔術感に溢れていて非常に読み辛い。 そしてカスタマイズするにも学習コストが高いという話を聞きます。 最近「RSpec止めますか、人間(Rubyist)止めますか」みたいな風潮が出ていてバリバリのRSpec派の私としては見過ごせない感じになってきたので、いっちょRSpecがどんな感じで動いてるのかを大まかに解説していくことで、世の中に対して再びRSpecを啓蒙していこうと思うわけです。 この話はrspec-core-3.1.7辺りをベースにしています。 起動 rspecのコマンドエンドポ

    これを読むとRSpecの裏側がどうやって動いているのか分かるかもしれないぜ - Qiita
  • rails_adminをカスタマイズする方法まとめ - Qiita

    当はrails_adminをカスタマイズするより、自前で実装した方が最終的には幸せになれると思うんですが、そうもいかない事情もしばしばあったりして(主にスケジュール的な理由で)、後から泥臭い場当たり的な対処に奔走しなければならないこともあります。 そういう時のためのノウハウが貯まったので書いておきたいと思います。 deviseと連携させる これは公式にもちゃんと書いてて、超簡単。

    rails_adminをカスタマイズする方法まとめ - Qiita
  • Railsをバージョンアップし続けるために必要なこと - Qiita

    当は、RubyWorld Conf辺りでこういう内容も交えてなんか話せればいいなあと思ってたんだけど、CFPに落ちたのでQiitaにポエムを書いてみました。 Railsはそれなりに学習コストはかかりますが、慣れてくるとデフォルトで便利なものが揃ってるしサードパーティライブラリも豊富で、未だに最も便利なWebアプリケーションフレームワークの一つだと思います。 なので、最近のスタートアップ界隈ではRailsで開発をスタートする、という話をよく耳にします。(個人の感想です) しかし、Rails体に新しい要素をガンガン取り入れてくるので、バージョンアップのサイクルはかなり早く、それに追従していくのはそれなりに大変です。 Railsで開発をする場合には、一旦レールに乗ったらプロダクトが死ぬまで走り続ける覚悟が必要です。(時速60km以下になったら爆発する) それを最初に理解しておかないと、あっ

    Railsをバージョンアップし続けるために必要なこと - Qiita
    masa0x80
    masa0x80 2014/08/28
    地獄っぽい
  • Rubyist向けのvimrcを晒す - Qiita

    最近、vimの設定をやり直すスイッチが入って大分更新されたので改めて久々にvimrcを晒す。 ファイル自体はjoker1007/dotfilesにある。 もし参考にされる方が居たら、丸々コピーすると色々問題あるかもしれないんで、適当に一部を抜粋するのが良いと思います。 特にキーマッピングは慣れがあるので、自分で決めた方が良いです。 実際には必要無いけど、環境に依って使うかもしれない設定とか混じってます。 文字コード周りは正直微妙。もうちょっと良い設定があったら知りたい。 macvim-kaoriya向けのlibrubyのローディングはファイル名調整しないと駄目かも。 最近は自分でコンパイルオプション弄ってrbenvで入れたrubyとリンクさせてるので、自分自身は使っていない設定。 vimrcの下にsnippet定義も書いてあります。 set nocompatible " 文字コード, 改行

    Rubyist向けのvimrcを晒す - Qiita
  • 1