タグ

ブックマーク / blog.willnet.in (130)

  • Rails::API について発表した - おもしろwebサービス開発日記

    FiNC さんの社内マイクロサービス勉強会と、表参道.rb にて、そろそろリリースされそうな Rails 5 におけるメジャーフィーチャの一つ Rails::API について話しました。 雑感 スライド読むと分かるように、Rails::APIAPI サーバを作る時の銀の弾丸でもなんでもなくて、条件に合致したときに使うとちょっとだけ速くなりますよ、軽くなりますよという機能なのでした。 Rails::API の機能面としてはそれだけなのだけど、Rails は Rack Middleware や ActionController::Base 内の Module が疎になっていて、着脱が簡単なんですよというのを示す良い例にもなっていると思います。使っていない Middleware や Module を外すことで、手軽にちょっぴり速く/軽くできるので、API サーバに限らず不要なものがある場合

    Rails::API について発表した - おもしろwebサービス開発日記
    willnet
    willnet 2016/03/07
    Rails 5 早くリリースしてほしい
  • rails-assets の調子が悪い時の回避策 - おもしろwebサービス開発日記

    皆さん、rails-assets は使っていますか? rails-assets は、Gemfile で js や css のライブラリを指定して、バージョン管理や依存の解決などをしてくれるとても便利なサービスです。 しかし最近ではその役目を終えたとして、最大で今年末でサポートを終了するとしています。 Future of rails-assets · Issue #291 · rails-assets/rails-assets そしてもう閉じることが決まったプロジェクトだからなのか、あまり活発にメンテナンスをしていないような印象を受けます。昨年からrails-assets を運営しているサーバが不安定になることが多く、rails-assets に依存しているプロジェクトを持つ会社さんは、bundle update やデプロイに失敗して辛い日々を過ごしたのではないでしょうか。 そんな折、明日

    rails-assets の調子が悪い時の回避策 - おもしろwebサービス開発日記
    willnet
    willnet 2016/01/18
    当面の危機は去ったようですが、サーバ不安定問題は解決していないので使えるtipsだと思いますよ (\( ⁰⊖⁰)/)
  • 最近のお仕事について - おもしろwebサービス開発日記

    ここ半年ほど、Clinical Platform さんのお手伝いをしています。最近エンジニア募集を開始したので、どんな感じでお仕事を進めているかを簡単に紹介しようと思います。 作っているもの クリニック向けのクラウド電子カルテです。 RubyRails のバージョン Railsエンジニアが会社を選ぶときは使っているRubyRailsのバージョンで決めるらしいので一応。 Rails 4.2.4 Ruby 2.2.2 PostgreSQL 9.3.6 Ruby と PostgreSQL のバージョンが少し古いのは、番環境である Engine Yard のバージョンに合わせているためです。gem 類は、週に一回自動で bundle update のプルリクエストが生成される仕組みが作られているためほぼ全て最新バージョンです。 (2015/11/09追記)Engin Yard が Rub

    最近のお仕事について - おもしろwebサービス開発日記
    willnet
    willnet 2015/10/30
    僕とペアプロしてくれるエンジニアを募集しています(\( ⁰⊖⁰)/)
  • Rails で fat model を避けるための、あまり知られていない方法について - おもしろwebサービス開発日記

    このエントリで書いた内容は、ほぼ Growing Rails Applications in Practice の内容が元になっています。英語ですが、ここで挙げた内容以外にもコードを綺麗に保つテクニックが書かれており、かつページ数も少なく読みやすいです。コードを綺麗に保つのが好きな方は一読してみることをおすすめします。 はじめに Rails で fat model を避けるための方法は、7 Patterns to Refactor Fat ActiveRecord Models を始めとして、多くのやり方が存在します*1。 validation や callback は ActiveRecord(以下AR) を継承せずとも利用することができます。7 Patterns to Refactor Fat ActiveRecord Models の 「3. Extract Form Objects

    Rails で fat model を避けるための、あまり知られていない方法について - おもしろwebサービス開発日記
    willnet
    willnet 2015/08/24
    id:t9a becomes でも動きますが、ActiveType.cast は "with less bugs and more consistent behavior" とのことなのでブログ内ではこちらだけ紹介してみました
  • find_by_sql したレコードで preload する方法 - おもしろwebサービス開発日記

    どうしても AR の query methods だけでは要求を満たせない場合の最後の手段として、find_by_sql メソッドがあります。皆さんよく使ってると思うのですが、戻り値のレコードからさらに association をロードしようとすると N+1 になるケースがあります。かといって User.preload(:comments).find_by_sql(sql) のようにしても期待通りには動きません。単純に preload 部分が無視されるだけです。 ではどのように書いたらよいでしょうか。 次のように書くと期待通りに動きます(Rails 4.2.1 で試しています)。 records = User.find_by_sql(sql) ActiveRecord::Associations::Preloader.new.preload( records, :comments ) re

    find_by_sql したレコードで preload する方法 - おもしろwebサービス開発日記
    willnet
    willnet 2015/06/15
    ブログ書いた
  • Rails で DB の Time 型を扱う - おもしろwebサービス開発日記

    Rails では、DB の Time 型 を扱うことができます。これは日付を必要とせず、時間だけを格納したいときに使います。 定義方法は、他の型と同じく add_column メソッドなどで time を指定するだけです。 add_column :users, :lunch_time, :time ただ、これを使おうとするにはちょっとしたノウハウが必要です。 RubyRails には、時間のみを扱うクラスはありません。DB の Time 型は Ruby の Time オブジェクトに変換されます。Time オブジェクトは年月日の情報を持っています。その際、タイムゾーンは utc (正確には ActiveRecord::Base.default_timezone で設定されたタイムゾーン) として扱われます。 lunch_time カラムに 12:00 が格納されていた場合、次のような

    Rails で DB の Time 型を扱う - おもしろwebサービス開発日記
    willnet
    willnet 2015/06/12
    ブログ書いた。思ったより難産だった
  • ゆるデブ合宿で島根に行ってきた - おもしろwebサービス開発日記

    ひょんなことから島根の自治体の方と知り合いになり、島根県が企業やコミュニティの合宿を誘致しているという話を聞きました。 合宿またやりたいなあ。島根まだ行ったことないし行ってみたいなあ。という気持ちからゆるデブのメンバーに相談したところ、反応がよかったので色々詳細詰めて、ゴールデンウィークを利用して島根に行くことにしました (\( ⁰⊖⁰)/) 内容については、すでに iR3 さんがブログに書いてくれています。 島根県松江市美保関町北浦海岸でyurufuwa開発合宿 - iR3’s diary 感想 全体を通じて、とても楽しい合宿でした!また行きたい! 島根の田中さんや井上さん、民宿の中村屋さんにいろいろご配慮&差し入れいただいて快適な合宿になりました。 4泊5日の合宿でしたが、2日は移動日(ゴールデンウィークなので調度良い時間のチケットが取れなかった><)に当て、2日もくもく、1日はアクテ

    ゆるデブ合宿で島根に行ってきた - おもしろwebサービス開発日記
    willnet
    willnet 2015/05/21
    ようやく島根合宿のブログ書きました
  • LOCAL Community Summit 2015 で ginza.rb について LT した - おもしろwebサービス開発日記

    LOCAL Community Summit とは、 地方の技術者やコミュニティの取り組みを、地元だけではなく東京で発表してみよう! 私達の地域の楽しさを、他の地域の技術者にも伝えよう! 地元を離れ首都圏で活躍している技術者や、いろんな地域のコミュニティと繋がろう! というテーマのもと、LOCALとして初の東京開催となるIT勉強会イベントです。 LOCAL Community Summit 2015 - LOCAL Community Summit | Doorkeeper 「いろんな地域のコミュニティ」の1つとして、ginza.rb の紹介LTをしてきました (\( ⁰⊖⁰)/) スライド見ただけだと内容はわかりにくいかと思いますので簡単に補足。 LOCALは、いろんなコミュニティの人が集まるメタコミュニティ!という話を聞いていたので、運営的に気をつけている点を中心にしつつ ginza.

    LOCAL Community Summit 2015 で ginza.rb について LT した - おもしろwebサービス開発日記
    willnet
    willnet 2015/05/21
    ブログ書いた #ginzarb
  • 最近の Rack サーバ事情について - おもしろwebサービス開発日記

    先月、heroku推しサーバが unicorn から puma に変わったという発表がありました。unicorn だとスロークライアントの影響を受けやすいというのが理由なようです。 もう少し詳しく調べてみましょう。 そもそもスロークライアントってなに その名の通り遅い回線のクライアントです。3G環境のモバイル端末などが該当します。 「unicorn だとスロークライアントの影響を受けやすい」とは unicorn はプロセスモデルのサーバであり、blocking I/O モデルを採用しています。つまり、クライアントとの通信中プロセスが専有されるということです。 例えば unicorn がワーカプロセスを3つ立ち上げていて、そこへ通信完了に10分かかるようなスロークライアントが3つ接続されたら…、続くクライアントはスロークライアントの通信が完了するまで実行を待たなければならなくなります。プ

    最近の Rack サーバ事情について - おもしろwebサービス開発日記
    willnet
    willnet 2015/02/25
    herokuの推しサーバ変更の件と、ginza.rb ミートアップでの知見を合わせてまとめてみました
  • 第19回 ginza.rb ミートアップ - おもしろwebサービス開発日記

    第19回目の ginza.rb ミートアップを開催しました。 Ginza.rb 第19回 だれが一番?Railsアプリサーバ徒競走!&Ruby2.2について話そう - Ginza.rb | Doorkeeper raptor と rhebok のパフォーマンスをみる 第17回ミートアップ で、Rack サーバの比較をしましたが、その時はまだ raptor の実装が公開されていませんでした。 今回は raptor(Passenger5) のベンチマークがとれるようになったので、ベンチを取ってみました。さらに、unicorn の2倍早いという rhebok というサーバも登場したので、それも一緒に。 @y_yagi さんが、第17回に利用したengine yardさんのアプリを使ってベンチをとってくれました。多謝! 使用したコード ベンチマークの結果 結果としては、比較対象としてベンチをとった

    第19回 ginza.rb ミートアップ - おもしろwebサービス開発日記
    willnet
    willnet 2015/01/23
    ブログ書いた
  • pry-remote について - おもしろwebサービス開発日記

    Pow などを利用して開発を行う際に、pry-remote は欠かせないツールです。 binding.pry_remote でブレークポイントを設定し、コンソールで pry-remote コマンドを使うと pry のようにデバッグができます。 しかし、pry-byebug の 2.0.0 になってから、pry-remote が利用できなくなってしまいました。pry-byebug の仕様変更が原因のようです。Issue を見る限り、対応には時間がかかりそうなので次のようにして対応しました。 gem 'pry-byebug', '1.3.3'

    pry-remote について - おもしろwebサービス開発日記
    willnet
    willnet 2015/01/22
    ブログ書いた
  • refile というファイルアップロード用 gem がよさそう - おもしろwebサービス開発日記

    File Uploads with Refile | GoRails を見ての感想文です。 carrierwave の作者が作った後継 gem refile がなかなかよさそうな感じです。 S3へのブラウザからの直接アップロードのサポート サムネイルの動的生成サポート アップロード時じゃなくて、ブラウザからリクエスト来た時に生成 もちろん番時はCDNなどと併用しないとダメです ファイルを選択したら即アップロードのサポート など、carrierwave にあったらいいなーと思っていた機能が盛り込まれています。あとは参考記事に書いてある文章を読む限りでは、ソースコードも見やすくなっているぽいですね(carrierwaveのソースコード追うのは結構辛かった記憶があります)。 次ファイルアップロード機能をつけるときには使ってみようと思います。 GoRails GoRails、スタート当初は ra

    refile というファイルアップロード用 gem がよさそう - おもしろwebサービス開発日記
    willnet
    willnet 2015/01/05
    ブログ書いた
  • Gimei が住所対応しました - おもしろwebサービス開発日記

    @miyohide さんの協力により、ランダムで日人の名前を返す gem Gimei が住所に対応しました。次のようにすると、それっぽい住所を返します。 address = Gimei.address address.kanji # => 岡山県大島郡大和村稲木町 address.to_s # => 岡山県大島郡大和村稲木町 address.hiragana # => おかやまけんおおしまぐんやまとそんいなぎちょう address.katakana # => オカヤマケンオオシマグンヤマトソンイナギチョウ address.prefecture.kanji # => 岡山県 address.prefecture.to_s # => 岡山県 address.prefecture.hiragana # => おかやまけん address.prefecture.katakana # => オカヤ

    Gimei が住所対応しました - おもしろwebサービス開発日記
    willnet
    willnet 2014/12/22
    ブログ書いた
  • 第17回 ginza.rb ミートアップで Rack サーバについて学んだ - おもしろwebサービス開発日記

    昨日、第17回目の ginza.rb ミートアップを開催しました。 Ginza.rb 第17回 二立て!Rackサーバ比較&Awesome Ruby - Ginza.rb | Doorkeeper Rackサーバ比較 Rackサーバに関する記事をいくつか読んで感想を話していたら1時間あっという間にたってしまった感じです。@y_yagi さんが Engin Yard さんの記事にあったベンチマーク(関連記事を参照のこと)を表にまとめておいてくれたお陰で捗りました。所感をまとめると Passenger 4 結構頑張っている 有料版によい機能が多い これが無料版にあれば…>< unicorn & nginx はやはり安定している puma、早いしよさそうだけど unicorn や Passenger と比べると安定性に少し欠ける印象 あとMRIで使うのなんかもったいない感じ あとはもうじき公開

    第17回 ginza.rb ミートアップで Rack サーバについて学んだ - おもしろwebサービス開発日記
    willnet
    willnet 2014/11/19
    ブログ書いた #ginzarb
  • railsにおけるformatの取り扱いについて - おもしろwebサービス開発日記

    respond_to についての以下の記事を読んだ。 respond_to without all the pain - Weissblog 詳しくは原文見て欲しいけど、用意していないフォーマットにアクセスされたときにどのように振る舞うかについて書かれている。 これまで、用意していないフォーマットにアクセスされた時は、僕は次のように、エラーページを強制的にhtmlフォーマットで表示するようにして対応していた(formats: [:html] がないと、リクエストされたフォーマットでエラーページを表示しようとして更にエラーになる)。 rescue_from Exception, with: :error500 def error500(e) render 'error500', status: 500, formats: [:html] end でもこれはちょっとおかしい。そもそこれは予想し

    railsにおけるformatの取り扱いについて - おもしろwebサービス開発日記
    willnet
    willnet 2014/11/17
    ブログというかメモ書きっぽいやつ書いた
  • 渋谷Ruby会議でginza.rbの話をした - おもしろwebサービス開発日記

    今日開催された渋谷Ruby会議で、コミュニティトークとして ginza.rb のこれまでの取り組みの紹介をさせていただきました。なんと30分の枠をもらっていたので、スライドの内容だけでは大幅に時間が余り、残りの時間で前回のginza.rbミートアップでやった「Rails 4.2 のリリースノート を読む」という内容を再演しました。参加された方には、大体どんな感じで ginza.rb が進んでいるかがわかってもらえたかと思います。 ginza.rb 、個人的にはとても面白いことばかりやっていると思うので、このスライドやDoorkeeperを見て気になった方はぜひぜひ一度ご参加いただけると嬉しいです!

    渋谷Ruby会議でginza.rbの話をした - おもしろwebサービス開発日記
    willnet
    willnet 2014/11/02
    ブログ書いた #ginzarb #428rk01
  • パーフェクトRuby on Rails の epub版、kindle版がでます - おもしろwebサービス開発日記

    kindle 版は今日から、epub 版は明日(11/1)から購入できるようです。これまで、紙なので購入をためらっていた方はどうぞこの機会にお買い求めくださいm(__)m パーフェクトRuby on Rails | Gihyo Digital Publishing パーフェクトRuby on Railsposted with amazlet at 14.10.31技術評論社 (2014-10-31) 売り上げランキング: 487 Amazon.co.jpで詳細を見る

    パーフェクトRuby on Rails の epub版、kindle版がでます - おもしろwebサービス開発日記
    willnet
    willnet 2014/10/31
    家では紙、外では電子書籍という手もありますね
  • heroku 用の DNS を PointDNS に変更した - おもしろwebサービス開発日記

    heroku はデフォルトでは naked domain (サブドメインがないドメイン)は使えません。おそらく EC2 の制約?のはず。DNS によっては抜け道があるのですが、route53 では回避ができません。 route53 だと、現状では「naked domain にアクセスしたら www のサブドメインにリダイレクトする」という設定をするのが精一杯です。 僕は基 route53 を利用していて、そのため heroku で運用しているこのブログも一時 www.willnet.in というドメインにしていました。しかしやっぱり naked domain が使いたいな−。と思ったのでやり方を調べました。 PointDNS 結論として、PointDNS というサービスを使うことにしました。 heroku の addon として提供されていること heroku で naked domai

    heroku 用の DNS を PointDNS に変更した - おもしろwebサービス開発日記
    willnet
    willnet 2014/10/22
    久しぶりにブログ書いた
  • ゆるふわ Development Club というサークルができた - おもしろwebサービス開発日記

    僕は個人でコツコツとwebサービスを作っているのですが、実際はチームで開発するほうが好きです。GitHub 上でミサワや寿司ゆきを貼ったり、チャットで機能の相談をしたり、雑談したりしながら開発を進める。やったことがある人なら、きっとその楽しさを理解してもらえるのではないでしょうか。 当たり前ですが、個人で開発するとなるとそうはいきません。チームで開発する楽しさを覚えてしまうと個人の開発は味気なくて物足りないです。 モチベーションの維持も課題です。納期や他者の目がないと、際限なく脇道にそれることができてしまいます。一人だとなかなか開発が進まない…><。 個人だけどチームっぽく楽しく開発を進めたい。 そこでポエムに、「僕みたいに個人で開発をしている人たちを集めたら、チームっぽい開発ができるのでは?」という内容を書いたところ、色々あってサークルが出来ました。 ゆるふわ Development C

    ゆるふわ Development Club というサークルができた - おもしろwebサービス開発日記
    willnet
    willnet 2014/08/06
    ブログ書いた
  • nuhack に参加した - おもしろwebサービス開発日記

    nuhackというハッカソンイベントに参加してきました。経緯やどんな感じのイベントだったかは一番下のリンクから辿っていただければわかると思います。 所感 至れり尽くせり。 ピクシブさんからの会場&フリードリンク&フリーお菓子の提供。欧文印刷さんからのお弁当&-gramPad&お土産の提供。好きなもの作ってるだけなのにこんなに良くしてもらうとか素敵すぎました。毎週やりたい。 お土産 -gramPad スマホのプロトタイピングをするのに適したNuBoardです。 何を作ったか @9dさんと一緒にStamPPPという学習サービスを作りました。 勢い余ってドメインを取得して公開しています。ただ、今のところ未完成なので使用感をつかむくらいしかできません。内容的には次のようなもの。 Twitterアカウントでログインして課題の種類を選ぶ 用意されているチュートリアルをやる できたらハンコをポンと押す

    nuhack に参加した - おもしろwebサービス開発日記
    willnet
    willnet 2014/07/20
    ブログを書くまでがハッカソンです #nuhack