おもしろwebサービス開発日記

Ruby や Rails を中心に、web技術について書いています

ActiveJob はまだちょっと使うには早いかも

Rails 4.2 から導入された ActiveJob は、sidekiq や resque などのバックグラウンドジョブ系 gem を、同じ利用方法で扱えるようにしてくれます。 これは便利だなーと思い、sidekiq を ActiveJob を通じて使ってみたのですが、しばらく使った後に「まだ本格…

色彩検定2級を受けてきた

6月28日(日)に色彩検定2級の試験を受けてきました。 色彩検定協会/カラーコーディネーター webサービスを作るときに、どんな色を使ったらキマるのか全然わからず適当に勘で決めていたのですが、色彩検定の勉強をする中である程度のセオリーをつかめた気がし…

プロフィールサイトを作った

先日ブログをはてなに戻したのですが、はてなブログはいわゆる naked ドメインに対応していないため、ドメインを willnet.in から blog.willnet.in に変更しました。 結果として willnet.in が空いてしまったので、プロフィールっぽい感じのページとして利用…

はてなに出戻りました

3年ほど Lokka + heroku でブログを書いていましたが、この度はてなに戻ることにしました。 もともと Lokka を使おうとしたのは、 markdown が使いたかった 自分でカスタマイズしたかった という理由からでした。 しかし 1 については今のはてなブログでは普…

find_by_sql したレコードで preload する方法

どうしても AR の query methods だけでは要求を満たせない場合の最後の手段として、find_by_sql メソッドがあります。皆さんよく使ってると思うのですが、戻り値のレコードからさらに association をロードしようとすると N+1 になるケースがあります。かと…

Rails で DB の Time 型を扱う

Rails では、DB の Time 型 を扱うことができます。これは日付を必要とせず、時間だけを格納したいときに使います。 定義方法は、他の型と同じく add_column メソッドなどで time を指定するだけです。 add_column :users, :lunch_time, :time ただ、これを…

ゆるデブ合宿で島根に行ってきた

ひょんなことから島根の自治体の方と知り合いになり、島根県が企業やコミュニティの合宿を誘致しているという話を聞きました。 合宿またやりたいなあ。島根まだ行ったことないし行ってみたいなあ。という気持ちからゆるデブのメンバーに相談したところ、反応…

LOCAL Community Summit 2015 で ginza.rb について LT した

LOCAL Community Summit とは、 地方の技術者やコミュニティの取り組みを、地元だけではなく東京で発表してみよう! 私達の地域の楽しさを、他の地域の技術者にも伝えよう! 地元を離れ首都圏で活躍している技術者や、いろんな地域のコミュニティと繋がろう…

Rails でセッションの有効期限を延長する

config/initializers/session_store.rb で次のように設定する Rails.application.config.session_store( :cookie_store, key: '_hoge_session', expire_after: 1.month ) Rails のドキュメントや railsguides で全然見つからなかったのはなぜなのだろう…。 …

最近の Rack サーバ事情について

先月、heroku の推しサーバが unicorn から puma に変わったという発表がありました。unicorn だとスロークライアントの影響を受けやすいというのが理由なようです。 もう少し詳しく調べてみましょう。 そもそもスロークライアントってなに その名の通り遅い…

RubyMotion Android で、Java のクラスをRubyで継承するときの落とし穴

自分用のメモ。RubyMotion 3.3。 前提 RubyMotion では Java のクラスを Ruby で継承できる ただ、その際はコンストラクタだけは Java で書かないとダメ Manuals | RubyMotion の 2.5 参照のこと 単純にコンストラクタを書く用途以外に、「現行のRubyMotion…

第19回 ginza.rb ミートアップ

第19回目の ginza.rb ミートアップを開催しました。 Ginza.rb 第19回 だれが一番?Railsアプリサーバ徒競走!&Ruby2.2について話そう - Ginza.rb | Doorkeeper raptor と rhebok のパフォーマンスをみる 第17回ミートアップ で、Rack サーバの比較をしまし…

pry-remote について

Pow などを利用して開発を行う際に、pry-remote は欠かせないツールです。 binding.pry_remote でブレークポイントを設定し、コンソールで pry-remote コマンドを使うと pry のようにデバッグができます。 しかし、pry-byebug の 2.0.0 になってから、pry-re…

refile というファイルアップロード用 gem がよさそう

File Uploads with Refile | GoRails を見ての感想文です。 carrierwave の作者が作った後継 gem refile がなかなかよさそうな感じです。 S3へのブラウザからの直接アップロードのサポート サムネイルの動的生成サポート アップロード時じゃなくて、ブラウザ…

このブログのデザインをBootstrap 3.3.1 にした

このブログは lokka & heroku で動いています。lokka の theme を Bootstrap 2.1系 で作っていたのですが、このたび最新の 3.3.1 にしました。 メンテがダルいのではてなブログに出戻りたい気持ちがあるのですが、既存の記事をうまく移行する方法が思いつか…

SendGrid 使うときの注意点

Rails で、text.erb 形式のみでメールテンプレートを作った場合は、テキストメールになるはず。でもなぜかHTML形式で受信してしまう…。 調べたら、使っているメール送信用のサービスSendGridのデフォルトの設定に、テキストメールをHTMLメールに変換して送る…

Gimei が住所対応しました

@miyohide さんの協力により、ランダムで日本人の名前を返す gem Gimei が住所に対応しました。次のようにすると、それっぽい住所を返します。 address = Gimei.address address.kanji # => 岡山県大島郡大和村稲木町 address.to_s # => 岡山県大島郡大和村…

第17回 ginza.rb ミートアップで Rack サーバについて学んだ

昨日、第17回目の ginza.rb ミートアップを開催しました。 Ginza.rb 第17回 二本立て!Rackサーバ比較&Awesome Ruby - Ginza.rb | Doorkeeper Rackサーバ比較 Rackサーバに関する記事をいくつか読んで感想を話していたら1時間あっという間にたってしまった…

railsにおけるformatの取り扱いについて

respond_to についての以下の記事を読んだ。 respond_to without all the pain - Weissblog 詳しくは原文見て欲しいけど、用意していないフォーマットにアクセスされたときにどのように振る舞うかについて書かれている。 これまで、用意していないフォーマッ…

渋谷Ruby会議でginza.rbの話をした

今日開催された渋谷Ruby会議で、コミュニティトークとして ginza.rb のこれまでの取り組みの紹介をさせていただきました。なんと30分の枠をもらっていたので、スライドの内容だけでは大幅に時間が余り、残りの時間で前回のginza.rbミートアップでやった「Rai…

パーフェクトRuby on Rails の epub版、kindle版がでます

kindle 版は今日から、epub 版は明日(11/1)から購入できるようです。これまで、紙なので購入をためらっていた方はどうぞこの機会にお買い求めくださいm(__)m パーフェクトRuby on Rails | Gihyo Digital Publishing パーフェクトRuby on Railsposted with am…

デザインビギナーズの取材記事が掲載された

僕が主催しているコミュニティの一つに、デザインビギナーズという、デザイン初心者たちが集まってデザインを勉強するものがあります。 そんなデザインビギナーズのミートアップに、Geekroid(仮) さんから取材が入りました。自分がやってる活動が、こんな…

heroku 用の DNS を PointDNS に変更した

heroku はデフォルトでは naked domain (サブドメインがないドメイン)は使えません。おそらく EC2 の制約?のはず。DNS によっては抜け道があるのですが、route53 では回避ができません。 route53 だと、現状では「naked domain にアクセスしたら www のサブ…

RubyHiroba 2014 で飛び入りLTした

RubyHiroba 2014 にて、pronto という、Hound っぽいことができる gem の紹介をしました。Hound って何?という方はこちらのエントリを参考のこと。 HoundCIでリポジトリに番犬を飼おう - blog.takuyan.com pronto はとてもよい gem なのでブログにかかなき…

ゆるふわ Development Club というサークルができた

僕は個人でコツコツとwebサービスを作っているのですが、実際はチームで開発するほうが好きです。GitHub 上でミサワや寿司ゆきを貼ったり、チャットで機能の相談をしたり、雑談したりしながら開発を進める。やったことがある人なら、きっとその楽しさを理解…

nuhack に参加した

nuhackというハッカソンイベントに参加してきました。経緯やどんな感じのイベントだったかは一番下のリンクから辿っていただければわかると思います。 所感 至れり尽くせり。 ピクシブさんからの会場&フリードリンク&フリーお菓子の提供。欧文印刷さんから…

bundler で特定のパスに gem をインストールするべきか否か

みなさんはどうしていますか。個人的には、ローカルの開発環境であればグローバルにインストールしちゃっても問題ない気がしてきています。 ずっと習慣で bundle install —path vendor/bundle ってしてたけど、別にグローバルな感じでインストールしちゃって…

mac で nokogori をインストールする

bundle install で nokogiri のインストールに失敗して、そこからやったことのメモです。 とりあえず libxml2 と libxslt 入れる。 brew install libxml2 libxslt これでもダメだったのでNokogiriのドキュメントを見ると、「libiconv をソースから入れろ」と…

bootstrap-sass という gem について

Rails で assets 関連のライブラリを使う際、数年前までは有志が作った gem を利用する(例: twitter-bootstrap-rails など)のが主流でした。しかしそれだと、gem の作者がボトルネックになってしまい、ライブラリのバージョンがなかなか上がらなかったりしま…

完全一致でgemの検索をするには

gem search rails とかすると、部分一致で検索されて結果がたくさんでます。完全一致したgemの情報のみ欲しいときは次のようにします。 gem search ^rails$ しかし毎回^や$を打つのはだるいですね…。そこで簡単なシェルスクリプトを書いてみました。-dは詳細…