2014-01-01から1年間の記事一覧

herokuでfluentDを動かす

herokuで動かしているアプリケーションのログを収集するのにfluentDを使おうと思い、調べたらherokuでfluentDを動かすサンプルが公開されていたので、早速入れてみた。これやこれを参考にしたが、今回は後者のgithubのサイトからherokuにディプロイして自分…

Railsのenum機能を使う

railsのenum機能を使ってみた。 class Test enum type: { todo: 'Todo', doing: 'Doing', done: 'Done' } end この場合色々なサイトに書かれている通り以下のメソッドが使える Test.todo # typeが'Todo'のものの一覧を返す ※SQL=> SELECT "tests".* FROM "…

delayed_jobを使う時の注意

delayed_jobを使う時、非同期に実行したいメソッドの前にdelayというメソッドを入れます。 例えば、TestBatchクラスのexecというクラスメソッドがあり、それを非同期に実行させたい場合、 TestBatch.delay.exec となります。 ただここで注意が必要です。ここ…

HerokuのpostgresqlのDBをリセットする

以下のコマンドを入れるとHerokuのpostgresqlがリセットされる heroku pg:reset DATABASE 確認を求めるメッセージが表示されるので、heroku上のアプリの名前を入力するこれでデータベースが初期状態(テーブルがない状態)になる。 テーブルを再度作り直せば…

rubotyを使って簡単ボット作成

botと言えばhubotが有名ですが、このhubotをと同じbotをrubyで作れるライブラリがあります。 それがrubotyです。このページに行くとサンプルをHerokuにディプロイして動かすというのが予め用意されています。 実に親切ですね! サンプルではslackを使ってい…

RailsでHTMLメール実装するときにHelperメソッドを使いたい場合

RailsのHTMLメールのテンプレートないでApplicationHelperのメソッドを使おうと思ったが、デフォルトの状態では使えません。 じゃ、どうするかと言えば、app/mailers/以下のクラスに以下の一行を追加すれば良いのです。HogeMailerというクラスがあるとして c…

ActiveRecordのrewhereメソッド

ちょっとどのような状況で使うのか、まだピンと来ないけどActiveRecordにはrewhereっていうメソッドがある。 これを使うと前に宣言していたwhere条件をoverrideすることができる。 #rewhereを使ってもその前にpointっていうカラムで条件指定してないからover…

ActiveRecordのmergeメソッドについて

ActiveRecordでテーブルのjoinをする場合以下のように書くと思います。 User.joins(:auth_providers).all.where(auth_providers: { provider: 'facebook' }) 発行されるSQLは次のようになります。 SELECT "users".* FROM "users" INNER JOIN "auth_providers…

rubyでメソッドの処理速度をはかるとき

rubyで処理速度をはかる時は以下のようにbenchmarkモジュールを使います。 で、この前Railsのコミットログを眺めていたら、gsubメソッドをtrに置き換えたというのがあったので、 試しに以下のように処理の計測を行ってみました。 require 'benchmark' hoge =…

RailsとJavascriptの連携

RailsアプリケーションとJavascriptの連携をしたい場合、[gon](https://github.com/gazay/gon)というgemがあります。これを使うとcontroller内でセットした変数をJavascript(rails3以上だとcoffeescriptを使うケースが殆どだと思いますが)内で使う事ができ…

Railsの静的解析ツール

現在業務で使っている解析ツールはrubocopだけだけど、他にも面白いツールがあったのでメモ。まずはrails_best_practices。これはrailsのコードを解析して、よろしくないものを教えてくれます。なかなか良い。rubocopはコーディングチェックなのでrubyとして…

Rails4のJoinについて -> [訂正]includesメソッドでした

Railsでincludesメソッドを使ってjoinする場合はActiveRecordのjoinsメソッドを使います。 User.includes(:photos) で絞り込み条件がある場合は、例えば以下みたいに記述します。 now = Time.zone.now.at_beginning_of_day User.includes(:photos)where(phot…

Railsのsaveメソッドでtrue/falseでなくオブジェクトを返したい場合

通常の場合ActiveRecordのsaveメソッドの戻り値はtrue/falseですが、そうでなく更新結果のオブジェクトを返したい場合以下のように記述するとできます user = User.find(1) user.tap(&:save)

Rails4.2から追加されるActiveJobについて

rails4.2のbeta2が出ましたね。 以前かいたActiveJobについて、修正があったので改めて記事を書きました。ActiveJobとはRails4.2から追加された仕組みで、delayed_jobやresqueなどのキューイングを行うgemを同じインターフェースで使えるようにしたものです…

stackprofを試しに使う

先日のRubyKaigi2014で紹介されたstackprofという解析ツールがあったので、試しに使ってみた。 設定は簡単で gem install 'stackprof' で入ります。Railsで使う場合はGemfileにセットしても良いかもしれません。 書いたらbundle installを実行。以上で設定は…

mrubyと戯れる

mrubyにはcrubyでいうirbのようなものがあります。それがmirbです。これを使うと色々試せます。 ので、これで少しmrubyを実行してみました。 class Hoge def hello puts 'hello' end end これは普通に動きます。 p Hoge.ancestors => [Hoge, Object, Kernel,…

hypermicrodataを試すの続き

gemのインストールが出来なかったので、Gemfileに以下のように記述してインストールをしてみました。 gem 'hypermicrodata', git: 'git@github.com:tkawa/hypermicrodata.git' これでbundle installでgemのインストールは完了です。 早速使ってみようと思い…

hypermicrodataを試す

個人的な研究でAPIの実装をしようと思い、先日のRubykaigiで紹介されたhypermicrodataを使ってみようと思いました。これはJSONを返すというよりか、HTMLをパースして返すAPIの新しい方式(?)の提案のように感じ実際に自分でも色々動かしながら色々感じてみた…

mrubyを試す

今年のrubykaigiはmrubyの話題が結構あったと感じました。LTとかでもmrubyネタが幾つかあったと思います。ので、久しぶりにmrubyをもう一回いじってみようと思います。mrubyは組み込みRubyと言われ、CRubyに比べライトなものになっています。インストールに…

RubyKaigi2014にてパート2

MRuby as Development Platform for Payments CloudWalk payments. 端末の問題tか色々あって悪夢だけど、CloudWalk使うといいよ。簡単に使えるしということかな。 今はwebのIDEがあって、それを使って導入が簡単に??? 開発者にも優しい作り。Mobile First…

RubyKaigi2014にて

Ruby Kaigiのメモ。 走り書きなので、間違いあるかも。 適宜修正します。Symbol GC Symbolについての話から。Rubyは皆さんを飽きさせないために、落とし穴沢山。Symbolを沢山生成することでメモリ圧迫する脆弱性がある。 ScalaやSmallTalkにもSymbolがある。…

Rails4.2の新機能AdequateRecordって

Rails4.2から追加されるActiveRecordの機能にAdequateRecordなるものがあります。 で、これは何かなと見ているとここに記事が書いてあります。ここを見るとfindメソッドやfind_byメソッド時にキャッシュされるから、処理スピードが上がるよという機能と思わ…

Rspecを書く時に参考にすべきサイト

最近rspecのバージョンを3.0.0.beta1から3.1にアップグレードしようと思っているのですが、ちょっと手間取ってしまっています。 ちょっと原因が分かったら色々纏めたいと思っています。で、今日の記事はrspec繋がりで、書き方についてです。今後書き方はここ…

rails4.2をいじってみる(ActiveJobs)

Rails4.2の最新機能のActiveJobを使おうと思い、少し調べてみました $gem install rails --version '~>4.2.0.beta1'このActiveJobは4.2から新たに追加されるキューイングのフレームワークです。 何か動かしながらと思い、サンプルプロジェクト作成。 $ rails…

Railsのステータスコードのシンボル表記一覧

このブログからのコピーです。何かの時にパッと見れるように。Status Code Status Message Symbol 1xx Informational 100 Continue :continue 101 Switching Protocols :switching_protocols 102 Processing :processing 2xx Success 200 OK :ok 201 Created…

facebook graph apiのgem koalaを使って友達一覧を取得する件2

先日ブログでver1.0にしてからfacebookの友達の数を取得するようにしていましたが、会社の同僚の方から「これで出来るよ」と教えてもらったので、再度書きます。修正方法はズバリ @api = Koala::Facebook::API.new('ACCESS_TOKEN') p @api.get_object('me') …

facebook graph apiのgem koalaを使って友達一覧を取得する件

友達が全件取れないのでおかしいと思ったら、Ver2.0からそのアプリでfacebookログインしている友達の数に仕様が変わったらしい。 なので、本当の意味で友達の数を取得したいのであればv1.0を使うようにしないと駄目。でコードで以下のようにkoalaが使うapiの…

仕事でfacebook graph apiをいじるgemを使ってみた

facebookログインはomniauth_facebookとかよく使いますが、facebook内の情報を扱う時に何を使うか、今まであまりちゃんと見てませんでした。 で、先日業務でkoalaを使ったのですが、これは簡単で良いですね。1.インストールはGemfileに追加してbundle instal…

Railsでテーブルに関係ないmodelを作って検索処理を作ってみる(elasticsearchを使って2)

前回の記事で検索出来るようになったが、ヒットして欲しい物がヒットしない。 例えば「abcdef」というタイトルがあるものを検索するときに「abc」でヒットして欲しいが ヒットしない。何がまずいのか、、、調査中ー。追記:2014/08/27 取りあえずHerokuのadd…

Railsでテーブルに関係ないmodelを作って検索処理を作ってみる(elasticsearchを使って)

今回検索用DBは考えた末にelasticsearchを使う事にしました。会社でも使われだしていて、何よりもHerokuでelasticsearchのAddOnが複数あったからです。mroongaをやるには結構大変そうだったので、これは別の機会に・・・。で使うライブラリですが、昔やった…