Rails

Wordpressの記事データをRailsのDBに移行する

目次 目次 おおざっぱな流れ 移行するデータ 1. CSVを抽出 記事データ カテゴリ タグ Primary Category 画像データ サムネイル 2. mysqlでimportする 記事データ カテゴリデータ 記事とカテゴリの関連付けデータ タグデータ 記事とタグの関連付けデータ Prim…

Googleのモバイルフレンドリーテストのデバイス判定が適切にされないとき

Googleのモバイルフレンドリーテストの際に、mobile用のViewが適切に読み込まれていないことに気付きました。これはページランクに影響が出る可能性大なので早急に解決すべき問題。 k0kubunさんのrack-user_agentを使って、RailsのAction Pack Variantsを用…

React x Railsでデータの同時編集ロック機能を実装する

検討 競合する可能性が大いにあり、かつデータの整合性が非常に重要な部分の実装なので、今回の場合は楽観的ロックではつらそう。では悲観的ロックではどうか。 悲観的ロックとは、 悲観的ロックとは、DBMSの行ロック機能(SELECT FOR UPDATE句)を利用して…

Reactでロード中indicatorを表示するcomponentをRailsに組み込む

react-spinkitを使ってみます。 github.com 以下にデモも用意してくれてます。 React Spinkit classnamesとobject-assignというライブラリを使用しているので、こちらをnpmでインストールしておくのを忘れないように。 GitHub - JedWatson/classnames: A sim…

Railsで標準クラスへメソッドを追加してNumericの桁数を求めれるようにする

Numericクラスに、桁数を返すメソッドを追加したいと思ったので、Railsに乗っていて標準クラスをオーバーライドするプラクティスあるのかなーと思って調べてみましたが、特に決まったものはなさそうです。 ruby on rails - Railsで既存クラスへのメソッド追…

impressionistでcounter_cacheがうまくupdateされない

PVの測定にimpressionistというgemを使っているのですが、このimpressionistにはRails3くらいに実装されたcounter_cacheの機能を簡単に盛り込めるようにしてくれるオプションをis_impressionableメソッドにつけてくれてます。 ですがこいつがうまくupdateさ…

Railsでログイン機能を自作する

はじめに deviseを使いたくないし、と思ったらsorceryは開発終了してしまってるみたいだし、monbanはきになるけどproductionに載せるには少し不安だ...。 ということで、僕がきいてる限りだと大きな会社のアプリケーションだとかなり自作の事例の方が多いみ…

【動的VS静的】Railsの404/500エラーページ 静的の勝利

揉めに揉める議論 最初、もりじゅんさんの以下の記事を参考にさせていただこうとしたのですが、 morizyun.github.io Qiitaでも(多分もりじゅんさんの記事を参考にした)同じ例をみかけて、そこでyuki24さんが、この方法はあまりよい方法でないというコメン…

Capistranoデプロイ時にwheneverのタスクでinvalid byte sequenceのエラー

Capistranoでのデプロイ時に、デプロイフックでのタスク中で以下のようなエラーが出るようになりました。 DEBUG [67444af4] Command: cd /var/www/onebox/releases/20160426053048 && ( export RBENV_ROOT="/usr/local/rbenv" RBENV_VERSION="2.3.0" ; /usr/…

Rails+Reactにbrowserifyを導入する

react-railsでReactを導入してるRailsアプリにbrowserifyを導入します! JSのモダンな環境に関してはめちゃくちゃ素人なので調べた過程で読んでよかった!な記事を順番になるようにメモしておきます。 最初に読みたい記事 最初に読んでおいたらいいなと思っ…

Webpay::Mockで決済周りのテストを書く

この記事 qiita.com とかを参考にしながらWebpayでの決済機能は実現できたものの、テスト書くのどうしよ。。 と悩んでいたところでWebpay::Mockというものを用意してくださってくれていることに気付く。 決済周りの処理のテストを書く方法をメモしておきます…

全アクション共通メソッドを利用してナビゲーションバーに検索フォームを配置する

検索フォームをナビゲーションバーのような共通viewファイルに置くにはどうしたらいいのか、一瞬迷ったのでメモ。 今回は、以下で作成した検索フォームをnavigation barに配置したいと思います。 totutotu.hatenablog.com 実装 Railsでは、全てのController…

Railsで検索機能を実装する

Special Thanks 以下の2つを参考にして実装しました。 github.com ruby-rails.hatenadiary.com 実装 Railsで、ransackを使ってObjectベースな検索機能を作成していきます。 今作成してるCofwaというコーヒーコミュニティアプリケーションで、豆のブランドの…

URLのパラメータにid以外を使う方法

/users/:idではなく/users/:usernameみたいにURLにid以外のパラメータの値を使う方法です。 以下でいけます。 resources :users, param: :username パラメータにするカラムはunique設定されてることを一応確認しておきましょう。 基本的にidはアプリケーショ…

【deviseに疲れた人のための】sorceryでユーザログイン機能を実装

deviseの代替案として、前々からsoceryいいよなんてきいてたので使ってみます。 github.com @komagata さんにおききしたらつらみはそんなに減らないとなったのが一瞬頭によぎる @komagata devise、つらみを感じてます...。あとはSorceryとかをよくきくのです…

Railsでのテスト時に`test_after_commit`のgemが読み込めないエラー

こんな感じのエラーに出くわした。 /Users/totzyuta/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/bundler-1.11.2/lib/bundler/runtime.rb:80:in `rescue in block (2 levels) in require': There was an error while trying to load the gem 'test_afte…

Twilio+Deviseで電話番号(SMS)ユーザログイン機能を実装

電話番号認証、サービスによってはすごい比率が高いらしいので実装したいなと思います。 目次 目次 方針の検討 1. 電話からの音声案内 2. 情報をアプリケーション側で開示した後、ユーザがSMSを送信 3. アプリケーション側から6桁の番号を送信、ユーザはそれ…

deviseでemailの確認を行わずにuserを保存する

deviseでconfirmableを使ってemailのverificationを行うようにすると、SNSログインを使ったユーザなりもともと登録されてたユーザなり全て送信されたメールの確認が必要になっていまいます。 そんなときの逃げ道。#skip_confirmation!を使えばよいようです。…

deviseで各種OAuthのSNSログイン実装 [Twitter,Facebook,Google,Yahoo!]

OAuthでの各種SNSログイン機能を、deviseを使ってるところに実装したので、それぞれ参考にした資料とかまとめておきます。 Twitter && Facebook deviseを使っていれば、以下の記事に従えば簡単に実装できます! qiita.com Twitterでレスポンスのデータサイズ…

Adminなlayoutを設定する

以下を参考に。 stackoverflow.com まずは、Adminで区切られる名前空間のコントローラーに共通する親コントローラを作成します。 class Admin::BaseController < ApplicationController layout 'admin' before_filter :require_admin_user end こうすること…

同一モデル間の中間テーブルを作成する

同一モデルを含む中間テーブルを作成して、そこでhas_oneやhas_manyしたい状況がありました。 以下がとても参考になりました。 has_many :through の関連に同一モデルを含む場合【rails4】 | Coma's Tech Blog HABTMでforeign_keyとかclass_nameを駆使してみ…

railsコマンドでundefined method `register_preprocessor' for nil:NilClass (NoMethodError)になる

長らくしてなかったプロジェクトでbundle updateしたら、bin/rails sなどのrailsコマンドが動かなかった。エラーメッセージは以下のような感じに。 /Users/totz/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/less-rails-2.7.0/lib/less/rails/railtie.rb…

Rails 5.0.0-beta1が出た && API mode使ってみた

今朝、ついに出てましたーー Rails 5.0.0.beta1: Action Cable, API mode, Rails command, https://t.co/Q1Q85ciiNM – It's out! "gem install rails -v 5.0.0.beta1" and party!— DHH (@dhh) 2015, 12月 18 ということで、Release Notesは以下に。 Riding R…

deviseとmobyletteでNo renderer defined for format: mobileになる

mobyletteのmobileとのviewファイルの切り替え方法が、MIME typeを変えるという非常にワイルドな方法なために、deviseでのrespond_with()で mobile なんてフォーマットのrendererねえよって言われてしまう。 これは、Railsのrenderを担当してるControllerに…

Rails4系でのActionCableの使い方

Rails4でリアルタイムなチャットアプリを実装しながら、ActionCableの基本的な使い方をみていきたいなと思います。 完成形こんな感じ。 作ったサンプルアプリは、以下に置いております。 github.com 以下の記事を参考にさせていただきました。 Rails 5's Act…

Railsに絵文字の画像を追加する

gemojiを使って絵文字を追加する方法です。 https://github.com/github/gemoji まずはgemをbundle # Gemfile gem "gemoji" $ bundle installしたら、Rakefileに以下を加えます。 load "tasks/emoji.rake" そしたらおもむろにrakeタスク実行 $ bin/rake emoji…

ActiveSupportのメソッドを素のRubyスクリプトで使う

今回は、ActiveSupportのyesterdayメソッドを例にやってみます。 ActiveSupportのyesterdayメソッドは、名前空間全部含めると、ActiveSupport::CoreExtensions::Date::Calculations.yesterdayでした。 https://github.com/rails/rails/blob/master/activesup…

RailsでPCとスマフォのViewを切り分ける

スタイルシートは分けてマニフェストを書いているのですが、Viewファイルをスマフォ用に分けるかどうかは多分誰しも一度は悩んだことがあると思います。 Viewファイルを一緒にするメリットは 保守が楽になる: 機能追加などによるPC、スマフォ両方のUIの変更…

Websocket-railsはどう動くのか

なんか仕組み的な ざっくりだと、「クライアント側のJavaScriptと、サーバーサイドのevent.rbがイベントを送受信しあう」って感じ。 まずWebsocketについて 以下を読めばだいたいわかります。他の抽象的な理論ばかりでなくHTTPのヘッダの内容からもWebsocket…

モデルクラスのインスタンスメソッドで属性を書き換えるにはselfがいる?

探る過程 ARモデル内で、その属性を更新しようとして以下のようなメソッドを書くとする。 # app/models/user.rb class User < ActiveRecord::Base # ... def toggle_roll status = status == "active" ? "inactive" : "active" save! end end Userモデルのイ…