rails
データ更新はない、ただ参照するだけのデータ群をいちいちテーブル作るのも面倒だしなーという場合active_hashを使うと良いです。あたかもActiveRecordを使ってテーブルからデータを取得しているかのように扱えるし、何かと便利です。
herokuで動かしているアプリケーションのログを収集するのにfluentDを使おうと思い、調べたらherokuでfluentDを動かすサンプルが公開されていたので、早速入れてみた。これやこれを参考にしたが、今回は後者のgithubのサイトからherokuにディプロイして自分…
railsのenum機能を使ってみた。 class Test enum type: { todo: 'Todo', doing: 'Doing', done: 'Done' } end この場合色々なサイトに書かれている通り以下のメソッドが使える Test.todo # typeが'Todo'のものの一覧を返す ※SQL=> SELECT "tests".* FROM "…
delayed_jobを使う時、非同期に実行したいメソッドの前にdelayというメソッドを入れます。 例えば、TestBatchクラスのexecというクラスメソッドがあり、それを非同期に実行させたい場合、 TestBatch.delay.exec となります。 ただここで注意が必要です。ここ…
RailsのHTMLメールのテンプレートないでApplicationHelperのメソッドを使おうと思ったが、デフォルトの状態では使えません。 じゃ、どうするかと言えば、app/mailers/以下のクラスに以下の一行を追加すれば良いのです。HogeMailerというクラスがあるとして c…
ちょっとどのような状況で使うのか、まだピンと来ないけどActiveRecordにはrewhereっていうメソッドがある。 これを使うと前に宣言していたwhere条件をoverrideすることができる。 #rewhereを使ってもその前にpointっていうカラムで条件指定してないからover…
ActiveRecordでテーブルのjoinをする場合以下のように書くと思います。 User.joins(:auth_providers).all.where(auth_providers: { provider: 'facebook' }) 発行されるSQLは次のようになります。 SELECT "users".* FROM "users" INNER JOIN "auth_providers…
RailsアプリケーションとJavascriptの連携をしたい場合、[gon](https://github.com/gazay/gon)というgemがあります。これを使うとcontroller内でセットした変数をJavascript(rails3以上だとcoffeescriptを使うケースが殆どだと思いますが)内で使う事ができ…
現在業務で使っている解析ツールはrubocopだけだけど、他にも面白いツールがあったのでメモ。まずはrails_best_practices。これはrailsのコードを解析して、よろしくないものを教えてくれます。なかなか良い。rubocopはコーディングチェックなのでrubyとして…
Railsでincludesメソッドを使ってjoinする場合はActiveRecordのjoinsメソッドを使います。 User.includes(:photos) で絞り込み条件がある場合は、例えば以下みたいに記述します。 now = Time.zone.now.at_beginning_of_day User.includes(:photos)where(phot…
通常の場合ActiveRecordのsaveメソッドの戻り値はtrue/falseですが、そうでなく更新結果のオブジェクトを返したい場合以下のように記述するとできます user = User.find(1) user.tap(&:save)
rails4.2のbeta2が出ましたね。 以前かいたActiveJobについて、修正があったので改めて記事を書きました。ActiveJobとはRails4.2から追加された仕組みで、delayed_jobやresqueなどのキューイングを行うgemを同じインターフェースで使えるようにしたものです…
先日のRubyKaigi2014で紹介されたstackprofという解析ツールがあったので、試しに使ってみた。 設定は簡単で gem install 'stackprof' で入ります。Railsで使う場合はGemfileにセットしても良いかもしれません。 書いたらbundle installを実行。以上で設定は…
gemのインストールが出来なかったので、Gemfileに以下のように記述してインストールをしてみました。 gem 'hypermicrodata', git: 'git@github.com:tkawa/hypermicrodata.git' これでbundle installでgemのインストールは完了です。 早速使ってみようと思い…
個人的な研究でAPIの実装をしようと思い、先日のRubykaigiで紹介されたhypermicrodataを使ってみようと思いました。これはJSONを返すというよりか、HTMLをパースして返すAPIの新しい方式(?)の提案のように感じ実際に自分でも色々動かしながら色々感じてみた…
Rails4.2から追加されるActiveRecordの機能にAdequateRecordなるものがあります。 で、これは何かなと見ているとここに記事が書いてあります。ここを見るとfindメソッドやfind_byメソッド時にキャッシュされるから、処理スピードが上がるよという機能と思わ…
最近rspecのバージョンを3.0.0.beta1から3.1にアップグレードしようと思っているのですが、ちょっと手間取ってしまっています。 ちょっと原因が分かったら色々纏めたいと思っています。で、今日の記事はrspec繋がりで、書き方についてです。今後書き方はここ…
Rails4.2の最新機能のActiveJobを使おうと思い、少し調べてみました $gem install rails --version '~>4.2.0.beta1'このActiveJobは4.2から新たに追加されるキューイングのフレームワークです。 何か動かしながらと思い、サンプルプロジェクト作成。 $ 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…
友達が全件取れないのでおかしいと思ったら、Ver2.0からそのアプリでfacebookログインしている友達の数に仕様が変わったらしい。 なので、本当の意味で友達の数を取得したいのであればv1.0を使うようにしないと駄目。でコードで以下のようにkoalaが使うapiの…
facebookログインはomniauth_facebookとかよく使いますが、facebook内の情報を扱う時に何を使うか、今まであまりちゃんと見てませんでした。 で、先日業務でkoalaを使ったのですが、これは簡単で良いですね。1.インストールはGemfileに追加してbundle instal…
今回検索用DBは考えた末にelasticsearchを使う事にしました。会社でも使われだしていて、何よりもHerokuでelasticsearchのAddOnが複数あったからです。mroongaをやるには結構大変そうだったので、これは別の機会に・・・。で使うライブラリですが、昔やった…
まずRailsもActiveModelを使います。コードは以下のような感じです class SearchMovie include ActiveModel::Model attr_accessor :keyword validates :keyword, length: { within: 3..20, too_long: '検索文字が長過ぎます', too_short: '検索文字が身近す…
前から使って入るがgithubの個人プロジェクトの各機能をpivotaltrackerを使って管理するようにしています。将来的にはこれをもっとメインで使うように会社でもしていければとおもっています。 で、ソース管理はgithubなので、このgithubとpivotaltrackerを連…
Railsのroutingでは、resourceを考えないといけません。URLもそれに対応していきます。 例えばblogというresourceに対してcommentというresourceが複数ある場合だとcong/routes.rbでは resources :blog do resources :comments end のように書きます。更にna…
テーブルのあるカラムの値が更新された時だけ処理をしたいという場合があると思います。その場合、以下のように[カラム名]_wasで変更前の値がとれます。 class Test < ActiveRecord::Base STATUS_SLEEP = 'sleep' STATUS_ACTIVE = 'active' after_update do …
テストを書くとpublicのメソッドだけでなく、privateについても書きたくなる事が暫しあります。 javaの場合だとリフレクションを使ってできますが、rubyの場合、どうするのかなと思って調べたらそこはsendメソッドを使えば出来るとあり、あー確かにそうだと…
railsの中身をみてみようと思い、まずはappフォルダなどrailsの各フォルダを読み込む処理をしているところはどこか色々みてみた まずはrails/railties/lib/rails/engine/configuration.rbのpathsメソッドに書いてあった。 def paths @paths ||= begin paths …
railsでちゃんとディレクトリにパスが通っているか確認したい場合「ActiveSupport::Dependencies.autoload_paths」を使う確認できます。 p ActiveSupport::Dependencies.autoload_paths この1行を追加すると、どこがロードされているのか確認できます。 rail…
全文検索を行う処理は以下のように書いてます。まだ絞り込み検索書いてなくてデータ登録と取得の部分の一部ですけど。 require 'groonga' module Searchable extend ActiveSupport::Concern included do end def self.add(path = [DBファイルのパス], table_…