タグ

railsとRubyに関するgigi-netのブックマーク (13)

  • この gem を使っているアプリケーションを探す - クックパッド開発者ブログ

    技術部開発基盤グループの鈴木 (id:eagletmt) です。 Ruby アプリケーションが使っている gem を一覧できる GemCollector というツールを作りました。 今回はその GemCollector の機能と、GemCollector の利用シーンの拡大について紹介したいと思います なお GemCollector は Rails Engine の形で gem として公開しています。 https://github.com/cookpad/gem_collector GemCollector 作成の動機 GemCollector を作った元々の動機は我々開発基盤でメンテナンスしている gem を更新したいとき、とくに非互換を含む変更を行いたいときに、変更の影響を受けるアプリケーションを把握することでした。 社内でよく使われている gem であれば、事前に社内での使われ方を調

    この gem を使っているアプリケーションを探す - クックパッド開発者ブログ
    gigi-net
    gigi-net 2017/03/23
    ご家庭で使える
  • Ruby on Rails アプリケーションにおけるモンキーパッチの当て方 - クックパッド開発者ブログ

    技術部の牧です。 今日はモンキーパッチの話をします。 モンキーパッチとは何か そもそもモンキーパッチ (monkey patch) とは何でしょうか? 端的に言えば、言語の組み込みクラスやライブラリ、その他外部ライブラリの挙動を、動的に拡張する仕組みをモンキーパッチと呼びます。 *1 例えば、Ruby のモンキーパッチのすごく単純な例として以下のようなものがあります。 module NilClassExtension def empty? true end end NilClass.prepend(NilClassExtension) インスタンスが空であるかどうかを判定するメソッドとしての #empty? は String や Array など様々なクラスに存在しますが、 nil を唯一のインスタンスとする NilClass には来は存在しません。 このモンキーパッチを導入することで

    Ruby on Rails アプリケーションにおけるモンキーパッチの当て方 - クックパッド開発者ブログ
    gigi-net
    gigi-net 2016/08/31
    発想がモンキーパッチ
  • SSEを使ってHTMLエスケープを高速化してみた - k0kubun's blog

    高速なHTMLエスケープをするライブラリを作った ある日HTMLエスケープを速くしたくなって、hescapeというライブラリを作った。 github.com とにかく速いHTMLエスケープがしたい Railsアプリのビューのレンダリングにおいて、CGI.escapeHTMLを高速化*1することでRailsのデフォルトのテンプレートエンジンが大きく高速化されたり*2、GitHubでもHTMLエスケープが全体のパフォーマンスに影響が大きかった事例もある*3など、常に自動でHTMLエスケープが行なわれるRailsの環境ではHTMLエスケープの速度が割と大きな意味を持っている。 従って、Hamlitの最速性を維持するためにHTMLエスケープのパフォーマンスを極めておきたかった。 vmg/houdini を倒したい 前述したGitHubの人が既にhoudiniというかなり速いエスケープライブラリを作

    SSEを使ってHTMLエスケープを高速化してみた - k0kubun's blog
    gigi-net
    gigi-net 2016/08/15
    高速化の人だ
  • 「現在時刻」を外部入力とする設計と、その実装のこと - クックパッド開発者ブログ

    こんにちは。技術部 開発基盤グループの諸橋です。 クックパッドでは昨今の多くのWeb企業と同じように、GitHub EnterpriseのPull Requestを使ったコードレビューを広範に実施しています。わたしたちのコードレビューでは、ソースコードの字面にとどまらず、サービスの機能として魅力的かどうかや、保守性を含めた設計が適切かといった議論に発展することも良くあります。 きょうはそんななかで話題に上がった「現在時刻」の扱いかたに関する設計の話を書きます。 背景 サービスを開発・運営している我々には、時間帯によって出し分けたり、特定の期間のみに表示したいコンテンツがたくさんあります。 そのたびにデプロイし直すというのはつらいので(特に24:00に出なくなるコンテンツなど)なんとかしたくなりますが、一方で時限式のコンテンツはその時になるまでちゃんと動いているか確証が取れないので怖いです。

    「現在時刻」を外部入力とする設計と、その実装のこと - クックパッド開発者ブログ
  • Hamlit v2.0をリリースしました & RubyKaigi登壇します - k0kubun's blog

    Slimより高速なHaml実装「HamlitRubyHTMLを生成するのにERB以外でよく使われるテンプレート言語にHamlやSlimがあります。haml *1 をやめて高速なslimに移行する人が多かったのですが、私はHamlのシンタックスの方が好きなので、slimが用意したベンチマークでslimより高速なHaml実装「Hamlit」を3月にリリースしました。 *2 これはslimが提供しているベンチマークでHTML escapeを有効にし *3、FamlとHamlitを追加したベンチマークの結果です。なおHamlitは完全にHaml互換の仕様ではなく、この非互換が有利に働いています。 互換性と性能が大幅に向上したHamlit v2.0 Hamlitの互換性の問題 Hamlitは最初のv0.1の時点で上記のようなベンチでSlimより高速ではあったのですが、以下のような欠陥がありまし

    Hamlit v2.0をリリースしました & RubyKaigi登壇します - k0kubun's blog
    gigi-net
    gigi-net 2015/12/01
    戦争だ
  • byebugやpry-byebugを使った後の挙動を10倍高速にしました - k0kubun's blog

    byebugとpry-byebugのbundle updateをしましょう byebugはRails標準でインストールされるRuby 2.1, 2.2向けのデバッガで、pry-byebugはpry *1 にデバッガの機能を追加するpryのプラグインです。 一昨日から今日にかけて、以下のパフォーマンス改善を含む byebug v8.0.0 と pry-byebug v3.3.0 がリリースされました。 github.com github.com byebugとpry-byebugには、一度byebugやbinding.pryを叩くとそれ以降ずっとアプリケーションの挙動が10倍遅くなるという問題がありました。 これが上記の変更により改善されたので、 Railsアプリやgemのデバッグにbyebugやpry-byebugを利用している方はそれらのbundle updateをおすすめします。 bi

    byebugやpry-byebugを使った後の挙動を10倍高速にしました - k0kubun's blog
    gigi-net
    gigi-net 2015/11/07
    すごいじゃん
  • 開発環境のパフォーマンスチューニング - クックパッド開発者ブログ

    こんにちは。技術部の吉川です。 クックパッドでは、ユーザーが快適にサービスを利用できるように番環境でのパフォーマンスを向上させるための様々な工夫がなされています。 ところでパフォーマンスを気にするのは番環境だけで良いのでしょうか? 開発環境に目を向けると、そこにもユーザーがいます。開発者です。開発環境のパフォーマンスが向上することで、開発者が快適にサービスを開発できるようになります。 今回はそういった開発環境でのパフォーマンス向上のための取り組みについてご紹介します。 ※ なお先日 Ruby2.2化されました が、今回紹介するものはそれ以前に実施されたため、Ruby2.2で同じ結果になるとは限りません。 状況 今回対象とするのはcookpad.comのアプリケーションです。 近年はMicroservices化を進めていますが、それでも体のレシピサービスのアプリケーションは依然として非

    開発環境のパフォーマンスチューニング - クックパッド開発者ブログ
    gigi-net
    gigi-net 2015/10/13
    例えばGCを止める
  • クックパッドにおける最近のActiveRecord運用事情 - クックパッド開発者ブログ

    インフラストラクチャー部の成田(@mirakui)です。 Rails の OR マッパーである ActiveRecord ですが、みなさんどのように運用していますか? ActiveRecord を使うと、 SQL を直接扱うことなく、抽象化された表現で RDB にアクセスできるので、アプリケーションの開発効率という観点ではメリットが大きいです。 一方で、 ActiveRecord が駆使されているアプリケーションをサーバに配置してプロダクションとして運用する立場からすると、いくつかの問題に突き当たります。 まずはクックパッド体アプリケーションにおける、最新の rake stats をご覧ください。 +----------------------+-------+-------+---------+---------+-----+-------+ | Name | Lines | LOC

    クックパッドにおける最近のActiveRecord運用事情 - クックパッド開発者ブログ
    gigi-net
    gigi-net 2014/08/28
    勉強になる
  • 自社サービスの機能を簡単にAPIで提供出来てしまう!gem doorkeeperが凄い。 - @camelmasaの開発日記

    自社サービスにAPIを実装する事ってあまりないですよね。 kamadoのプロダクトも現在はAPIは公開してません。 もし提供するのであれば、簡易的な方法ですが、ユーザーテーブルにtokenカラムを追加して、API用のルーティングを作成する…という方法が考えられると思います。 しかし、その実装時間でより良いAPIが実装出来るとしたら素晴らしいですよね。 そこで紹介したいのがgem doorkeeperです。 日語の記事が見当たらなかったので記事にしました。 github https://github.com/applicake/doorkeeper gem doorkeeperってどんな機能があるのか? 簡単に説明すると、 ・アプリケーションの管理機能 ・アプリケーションの承認管理 ・スコープの設定 いってしまえば、Facebook API(に近い実装)そのまま実装出来ます。 しかもOAu

    自社サービスの機能を簡単にAPIで提供出来てしまう!gem doorkeeperが凄い。 - @camelmasaの開発日記
    gigi-net
    gigi-net 2012/10/06
    よさそう
  • Rails3でどう書けばいいかわからない時、参考になる7つのURL

    はじめに Rails3.0.0がリリースされて、2ヶ月(2010年10月末現在)。皆さんRails3ライフを満喫していますか? Rails3がはじめてという方、マニュアルやリファレンス探しに苦労されていませんか? Rails3でコードを書いていると、どうかけばいいのかな?ということもしばしばあって、自分なりに参照するサイトなどがまとまってきたので、今日は自分が参照する順番に、URLを晒していきます。少しでも参考になれば幸いです。 もくじ Rails Searchable API Doc Google – Search by date Rails 3 Ropes Course Railscasts – rails-3.0 episodes Ruby on Rails Guides Github – Search: rails3 example O’REILLY – Rails3 in a N

    Rails3でどう書けばいいかわからない時、参考になる7つのURL
  • Rubyの魔術 数々の“スペル”で高度なプログラミング − @IT

    2010/09/13 元JavaプログラマのPaolo Perrotta氏は、Rubyを使い始めた頃のことを振り返り、こう話す。 「私はJavaの世界からRubyに来た当初、とてもハッピーなプログラマでした。Rubyっていいね、かっこいいじゃん! と。ところが、最先端のイケてるライブラリの中を覗いてみたら、分からないところだらけだったんです……」。 RubyKaigi2010で「A Metaprogramming Spell Book」(あるメタプログラミング魔術の書)と題した講演を行ったイタリア人プログラマのPerrotta氏は、Ruby on Railsのソースコードを覗いてみたときの驚きをこう表現する。 「例えばalias_method_chainというメソッドは、一体どこにあるんだと探しました。どこにあるか分からないんです。こんなことJavaではあり得ません。結局、テキスト検索で発

  • [Rails2.0.2]NGワードの検証

    Railsの話は久しぶりですね。 さて、タイトルの通りNGワードの検証ですが あまり使う機会がないかもしれないですね。。 しかし、投稿サイト等構築する際には必須なのかもしれません 変な事件も多いですからね ということで今回はNGワードの検証をチャチャっとやってしまいましょう^-^ まず、NGワードをtxtファイルに書き出していきます。 この時既に正規表現として書いていきます。 例: ○○|○○○|○○○○ これをどこでもいいですがRAILS_ROOT内にng.txtとして保存します。 自分はdocに置いておくことにします。 次にモデルにvalidateを書いていきます。 投稿サイトを意識してArticleクラスとしましょう。 class Article < ActiveRecord::Base @@ng = Regexp.new(open("#{RAILS_ROOT}/doc/ng.

  • はてなブログ | 無料ブログを作成しよう

    突然の出会い: プラウベルマキナについて 日がバブル経済に突き進み始めた頃に3,500台ほど作られ、数年後にひっそり生産が閉じられた超短命製品プラウベルマキナW67とご縁があった。 その生産数の少なさからまともな個体と出会うことがなかったのだけど、使わないデジタル機材一式を売りに行った帰りにガラス…

    はてなブログ | 無料ブログを作成しよう
  • 1