Rails

悠木碧のtwitter botを閉じようと思う

みなさんさようなら. 2016年が終わります. 個人的に痛々しいサービスを作り始めて,そろそろ3年経ちました.運用していると,バグもあるしバージョンアップも必要だし,たまにはリファクタリングや機能追加もしないと存続できないということがよくわかりま…

Shoryuken,それと例外検知gemを作った話

みなさんさようなら. Railsの非同期処理って何使ってますか? Sidekiq?Resque?,え?DelayedJob? 個人的にはSidekiqが結構好きで,よく使っていたのですが,最近Redisのメモリが足らなくなってきて…… たまにエンキューに失敗します. もちろんインスタン…

巨大レコードのページネーション用gemを作った

Railsにおいて,kaminariやwill_paginateのようなページネーションライブラリは非常に強力だ. というか,あまりページネーションというものを意識せずとも使えてしまうので,便利だ. ページネーション時のカウントクエリが重い 便利ではあるのだが,すべて…

capistranoでunicornのoldプロセスが殺せない

最近Capistranoを導入しました. 一般的なRailsのプロジェクトにCapistranoを組み込むのは,このあたりを参考にすると割と楽にいける.Capistrano 3系でRails4.1のデプロイ[rbenv][rvm][ruby2.1] - 酒と泪とRubyとRailsとmorizyun.github.io unicorn + rails…

sprocketsの機能に不満を感じたのでgemを作った

Railsのassets関連の機構として採用されているSprockets.rails/sprocketsgithub.com かなり便利な上に,普段あまりこいつの機能について意識せずに使える設計となっているので,見事だなぁと思うわけですが,ちょっとだけ不満なことがありました.Sprockets…

ActiveRecordのconnection_poolで怒られる

Whalebirdを実装していた時の話. iOS向けtwitterクライアント,Whalebirdを公開しました - PartyIXh3poteto.hatenablog.com サーバ側のAPIを実装しているときに,Userstreamタスクを実装したことがあった.Userstreamは,無限ループに入るタスクである. そ…

RequestのRSpecを実装する

Railsのテストを書く上で,やっぱりRSpecはめちゃくちゃ書きやすい. そんな中でも最近はcontrollerのspecはあまり書かなくて,requestのspecばかりを書いている.そもそもcontrollerのspecは単体テストで,requestのspecは結合テストなのだけれど,だいたい…

asumi.chをRails3.2からRails4.2までアップグレードした

asumi.chを公開してもう1年以上たちましたね.阿澄病治療薬を作った - PartyIX 阿澄病治療薬を作った - PartyIX そろそろ時期なのかなーということで,Railsのバージョンアップをしました. というわけでメモを残しておきます. とりあえずアップデートをか…

sidekiqのリトライ回数は26回以上を指定できる

Railsの非同期処理実行を実現するgemとして,sidekiqは非常に有用です. 有名ではあるので,一般的な使い方についてはここでは説明しません.Rails - sidekiqの使い方 - Qiita Rails - sidekiqの使い方 - Qiita この辺を見ると簡単に使えるようになると思い…

iOS向けtwitterクライアント,Whalebirdを公開しました

半年くらいカタカタし続けていましたけど,ようやく公開になりました.去年の4月に,iOS使いになったのですが,やっぱりtwitterを見るにはサードパーティ製のクライアントが欲しくて……. ただ,どうにもぐっとくるクライアントに出会えなかったので,自分で…

Railsで呼び出すjsをページごとに分けたい

Railsにかぎらず,ある程度のフレームワークに乗っかって開発していると「できることはできるんだけど,ちょっと好みに合わせたい」みたいな要望が発生してくる.今回のも,そんな「気を使えばできるけど頑張りたくない」ときに便利なことです. Railsはjava…

Rails4.1にgemでbootswatchを適応する

Webサイトのデザインにおいて,twitter bootstrapを使ったことがある人は多いと思う.Railsに限った話ではなく,俺のようにデザインセンスが芽吹きもせずに育ってしまった人間であっても,ある程度まっとうな,キレイなサイトがつくれてしまう. それはそれ…

AWS SESでBCC込みのメールを配信したい

RailsにはActionMailerというものがあり,メールを送る場合はこいつを使う場合がほとんどかと思います.アプリケーション側はそれでいいのですが,サーバーとしてAWSを使用していると,ドメインの設定などをする都合上,サーバーのインスタンス本体からメー…

has_many throughで,class_nameとかforeign_keyをちゃんと復習してみる

has_many,throughとかでモデルやテーブルの構成を考えるとき,どうしてもカラム名と関連づけるテーブルの名前が一致しなかったり,望み通りの命名で行けない場合がある. もちろん,一つのテーブルが,他のテーブルのレコードを複数持つだけなら,命名はス…

ransackのsearch条件を複数個使いたい

railsのActiveRecordのメソッドの中でも,whereはかなり頻繁に使うし,使い勝手がいい. ただ,これをさらに複雑な条件で絞り込みたいときなどに使うのが,ransackというGemである. https://github.com/activerecord-hackery/ransack 使いどころも多いので…

figaroで環境変数を設定したRailsアプリをAWSで運用する際のバグについて

以前Ruby on Railsの開発で便利な,rails_config + figaroの紹介をしていたかと思います. http://h3poteto.hatenablog.com/entry/2014/04/12/232406 Railsでの開発における,環境変数の設定がラクにできるよということで,この組み合わせがすごく便利なので…

環境ごとに設定ファイルを分けたいなら,rails_config + figaroの組み合わせが最高に便利

みなさんさようなら.Railsでプロジェクトをいくつか作っていくうちに,だんだん設定ファイルの管理の仕方もなれてきて,一番便利そうなところに落ち着きました.それが,rails_config + figaro の組み合わせです. rails_config 概要をまず説明しますが,ra…

Rails3.2系でのCSRFの挙動に気をつける

CSRFとは,Cross site request forgeriesの略で,入力フォームなどで,外部からPOSTできてしまうという脆弱性を点いた攻撃です.Rails2.0以降,Railsの生成するフォームでは自動的にCSRFトークンが含まれており,POSTに関しては自動的にCSRF対策がなされてい…

jpmobileを使っているRailsアプリケーションにアクションキャッシュを導入する.

Railsにはページキャッシュ,アクションキャッシュ,フラグメントキャッシュという3種類のキャッシュが使える. ページキャッシュは自由度がない代わりに,えらく速くなるのでオススメなのですが,多少なりともRailsのcontrollerを通って欲しい処理がある場…

【Ruby on Rails】whereで期間を範囲指定する方法

DBから期間で絞り込んでwhereで取り出す方法。 よく紹介されているのが以下のような書き方。 from = Date.today.beginning_of_month to = Date.today.end_of_month sample = Sample.where(created_at: from...to ) Sampleテーブルから、created_atの日付が今…