ぴよログ

↓に移転したのでこっちは更新されません、多分。

Rails

RailsのRakeタスクを上書き・再定義するには

既存のRakeタスクと同名のRakeタスクを定義した場合、上書きではなく連続実行になります。確か。 Railsでフレームワーク側で定義されているRakeタスクが30ほどありますが、それに含まれるタスクを少しカスタムして実行したいような場合に、lib/tasks以下にra…

RailsのGrapeとJbuilderでAPI開発

RailsでAPIを作るならGrapeを使うってのが定番っぽいので使ってみました。 参考にしたのはこのへん intridea/grape Ruby - RailsとGrapeで行う最高のWeb API開発 - Qiita Grapeの導入〜Hello World インストールはgem installすればOKです。次にAPIの実装コ…

Rubyのダミーデータ生成gem

Railsアプリケーションの作り始めってローカルのデータベースにデータが全然なくて何かと作りづらいってことありませんか?データがないとページネーション書けないし、なんか雰囲気出ないし、、、みたいな。 Railsの場合はseed.rbにデータ生成プログラムを…

@masuidriveさんの「wri.peを事例に学ぶ」開発編・リリース編

第1回を生視聴した増井さんのこれの第2回、第3回に関するメモです。 @masuidriveさんのスクーの授業が面白かったのでメモるよ - PILOG 先週配信された第2回は生視聴できませんでした。これも増井さん絡みでちょっときもい感じなんですが、IKEA家具でオフィス…

bundle installするパスを一箇所にまとめる

リスク回避のためにソースコードはDropboxの管理下に置いています(一人プロジェクトだと% git pushを忘れる可能性も少なくありません)。 プロジェクトに関わるソースファイルだけであれば大した容量にはならないのですが、依存するライブラリのソースコー…

Rails4.1のsecrets.ymlはfigaroと違うの?

Rails4.1が正式にリリースされたらしいので少し見てみたけど、secrets.ymlとかいうのがサポートされるようになったんですね。 公開したくないAPIキーなどの情報をconfig/secrets.ymlに書いておくとRails内でアクセスできるのだとか。 こうやって書いておくと…

Railsで"invalid byte sequence in UTF-8"

これ面白かったので紹介。 Rack/Ruby on Rails: ArgumentError: invalid byte sequence in UTF-8 | Running with Rails - Dev Blog not only for Rails fanatics! RailsアプリケーションのURLにこのパラメータ=>?%28t%B3odei%29をつけるとエラーになることが…

RubyのOPMLパーサー

結論 これ使えば一発です。 feedbin/opml_saw あとは雑談 2013年6月末のGoogleリーダーのシャットダウンの際、OPMLというフォーマットを初めて知りました。なんのことはないただのXMLなんですが、一応アウトラインプロセッサーのためのMLということでOPMLと…

Rails: form_forでの数値用のコントロールとvalidates numericality

form_forで何が使えるのかって全然把握していなかったのですが、number_fieldってのがあるんですね。 Hamlで書くとこういう感じに。 = form_for @my_model, method: :put, role:"form", remote:true, class:"form-horizontal" do |f| .form-group = f.label …

Rubyでcronのような定期実行を実現するclockwork

先日の記事でもちょろっと紹介しましたが、RSSリーダーを開発した際にフィード更新ジョブを定期的に発行するためにclockworkというgemを使用しました。 RSSリーダーの記事更新のバックグラウンドジョブ概要 - PILOG 単独で使う まずはRuby単独で使う方法です…

RSSリーダーの記事更新のバックグラウンドジョブ概要

RSSリーダーを作ったときのことをまとめておくシリーズ。 これまでの記事はこちら。 RSSリーダー - PILOG 僕が知る限り全てのRSSリーダーは登録フィードをバックグラウンドで更新し記事を追加します。RSSリーダーのユーザー側、システム側から見てみます。 …

Railsでデータベースのレプリケーションをしたいとき

データベースの負荷分散の方法の一つレプリケーションという方法があります。マスターDBへの変更をスレーブDBに同期するようにしておいて、書き込みのクエリはマスターDBへ、読み取りのクエリはスレーブDBへと振り分けることで負荷を分散しようというやり方…

RubyでRSSフィードをパースするgem、Feedzirra

RailsでRSSリーダーを作ったときに得たノウハウ第2弾、RSSフィードのパースのところを書いてみようと思います。 第1弾としてこんなん書きました。 個別ページのURLからRSSフィードURLを取得するfeedbag - PILOG サイトURLを渡すとHTMLを解析してRSSフィード…

Deviseでログイン後のURLを変える方法

RailsでDeviseを使っているときの話。いくらでも情報がある話ですが、自分のためにメモります。 http://hostname/ にログインボタンを置いておいて、ログイン後はhttp://hostname/memberとかに移動したいケースがあると思いますが、これは比較的簡単に書けま…

Railsでログインとは別に複数のサービスとの連携を行う方法

ログインはメールアドレスでさせておいてログイン後に各種SSOサービスとの連携を済ませる方法を考えてみます。 まず、お手軽にやりたいのでDeviseとOmniauthを使うのは確定です。omniauth-facebookやomniauth-twitterなどを使うと簡単に連携できますよね。 …

resque-schedulerで予約済みのJobを複数削除

公開されているresque-schedulerで条件に該当するジョブをまとめて削除する方法が見当たらなかったのでハックしたという話です。 resque-schedulerはバックグラウンド用gemであるResqueをさらに拡張したもので、cronのような定期的な動作をさせたり、特定の…

railsのサブコマンドが使えなくなる問題の原因はbinstubs

半年ほど前ですがアプリケーションをデプロイした先でコンソールを起動できない問題に遭遇しました。よくわからなかったのでQA@ITで質問を投げたのですが、結局解決には至らず。 AWSにデプロイしたRailsアプリケーションのコンソールを起動したいがUsageが…

自前のgemをRailsアプリと並行して開発するワークフロー

Railsアプリケーションを書いていて一部機能をgemに切り出したほうがいいんじゃないか、という場面に遭遇したのでローカルでgemを作りました。 Railsアプリケーション側ではbundlerでローカルにあるソースをrequireして使うことができます。なんでgithub等を…

デプロイ先のサーバーでrails consoleできないときの対応とCapistranoからの使い方

RailsアプリケーションをCapistranoでデプロイするのはよくあるやり方です。僕もその方法でサービスをデプロイしています。 ところがこの方法でデプロイしたサーバーではrails consoleがうまく動かないという問題(もしくは僕の設定不備)があることがわかり…

RailsでtimeとdatetimeとSQLiteとMySQLではまる

RSSフィードを例にとって、僕がRailsを触っているときにはまったことを書いておきます。初歩かもしれんけどハマったもんは仕方ないし、Stackoverflow見てたら他にも同じような人がいるっぽかったんでちょっとまとめておきます。 前置き RSSフィードは書く記…

Rubyの正規表現でテキストの置換ができるWebサイト

自分用にテキストの置換ができるwebサービスを作りました。 Regex Replace 背景 正規表現による文字列置換なんかはエディタを使うべきところなのですが、普段からつかっているEmacsの正規表現が使い勝手がとても悪いというのがそもそもの原因です。 Emacsの…

RSpecでjavascriptのテストを除外する設定

実験的にRailsの開発をしています。railstutorialをひと通りやったこともあってRSpecを使った画面遷移のテストを書いたりもしてみています。 railstutorialをやりながら思ったのはテストおせえええってことです。なのでSporkを使います。 Sporkを使うとテス…