hello-world.jp.net
webエンジニアのメモ。とりあえずやってみる。

#Rails

railsとsinatraの使い分け

sinatraでアプリを作っていたら、色々機能が足りなかったので継ぎ足し継ぎ足しで色々増やしていったら結局railsのようなもの、になってしまいました。

[mysql][rails]Character set 'utf8mb4' is not a compiled character set and is not specified in the '/usr/share/mysql/charsets/Index.xml' file

mysql5.1が動いていた環境をmysql5.6にアップデートした後、rake db:createで utf8mb4のDBを作成しようとしたところ以下のエラーが発生

[rails]omniauth-twitterで大きいサイズ(bigger)のプロフィール画像を取得する

ruby2.1, rails4.1.1で確認 omniauth-twitterを使ってtwitter認証を行った際にプロフィール画像を取得したかったのですが、デフォルト設定だと、`auth['info']['image']` に入ってくる画像URLの画像サイズが小さいので、大きい画像を取得するようにしました。

[rails]erbとunderscore.jsを一緒に使ったらundefined local variables in templatesエラーが発生

erbのテンプレート内にunderscore.js用のテンプレートを記述していたら

[rails]国際化対応時にviewごとにlocaleファイルを持つようにする

localeファイルをどうやって管理しようかなと思った時に、フロントエンドのエンジニアに相談したら「viewごとにlocaleファイルを置きたい」という要望をもらったので分けてみました。

[rails]国際化対応でlocaleを省略したURLのrouting設定

タイトルだけだとよくわからないですね サンプルサイトとして、

[rails]Springを使ってRailsコマンドを高速実行

Ruby2.1, Rails4.0.3で確認

[rails]simple_formでモデルを使用しない場合

sns認証機能のあるモックを作っていた際に、最初はsimple\_formを用いて以下のようにUser情報を更新するフォームを作成していたのですが、

[rails]simple_form使用時にinputフォームのデフォルト値を設定する

単にvalueを指定すればできるかなと思ったのですが、それではダメでinput\_html内のvalueを指定する必要がありました。

[rails]routes定義をブラウザで確認する

今頃知ったのですが、Rails4から rake routes で見れるroutes定義をブラウザからも見れるようになったんですね。

[rails]helperをview以外で使う場合(rails console)

helperをviewではなくcontrollerで使いたいことがあったので調べてみました。

[rails][mysql]Can't connect to local MySQL server through socket '/tmp/mysql.sock'

Railsアプリを起動しようとした際に `Can't connect to local MySQL server through socket '/tmp/mysql.sock'` というエラーが発生。

[rails]carrierwaveで特定のuploaderだけ別のs3バケットを使いたい場合

carrierwaveの保存先にs3を使用する場合、config/initializers/carrierwave.rb にs3の設定を書くと思いますが、 特定のuploaderだけ普段とは別のs3バケットを使いたい場合どうやるのかを調べてみました。

Rails Application Templateを使ってみた

やろうやろうと先延ばしにしていたRails Application Templateを使ってみました。

[Rails]ActiveAdminでCSVダウンロード機能をカスタマイズする

ActiveAdminにはcsvダウンロード機能がデフォルトついているのですが、デフォルトのままだと一括でcsvデータを取得することができません。(管理画面表示1ページあたりの表示件数分になるので30件しか取得できませんでした)

OmniAuthで認証した後に、tweetしたりfollowしたりする

昨日、 RailsでOmniauthを使ってTwitterログインする方法をまとめました。

Railsで一時的にbefore_saveをskip

Rails3.2で確認 昨日の Railsで一時的にupdated\_atの更新をskip に続いて、 今回は、一時的にbefore\_save等のcallbackをskipする方法です。

[rails]strip_tagsをcontrollerで使う場合

テンプレートのhelperメソッドにhtmlタグを除去するstrip\_tagsメソッドがあります。

[rails][rspec]特定のテスト時のみenvを変更したい場合

RSpecで特定のテスト時のみenvを変更したいということがあったのでやってみました。

[rails][rspec]controller testでcookieのテストをする

rspecのcontrollerテストでcookieのテストを行いたい場合、 `response.cookies['key']` でcookieの内容を取得できます。

[rails]Active Adminのformでjp_prefectureを使う

都道府県データを扱う際に、都道府県マスターデータをどうしようかなと思っていたところ、 chocoby/jp\_prefectureというgemを発見し、こちらを使わせていただきました。

[rails]Errbitでdevelopment環境でも通知したい

Railsのエラー管理に便利な errbitですが、デフォルトだとdevelopment環境では通知が来ない設定になっています。

[rails]capistrano実行時にユーザ入力によって動作を変える

capistranoでaskメソッドを使うとユーザ入力を受け付けることが可能になります。

[rails]ページにアクセスするとリクエストが2回飛んでしまう現象にハマった

開発中のRails環境でページにアクセスすると、なぜかリクエストが2回発生する現象に遭遇しました。

[rails]unicorn設定ファイルと起動スクリプトのメモ

unicorn設定は毎回同じことを書いている気がするのでメモしておきます。

[js]jQueryのajaxで画像(ファイル)アップロードをする

以前作成した画像アップロードAPIを使うサンプルを作ろうと思い、jQueryを使ってajaxで画像アップロードをやってみました。

[rails]特定のcontrollerではbefore_actionをskipしたい

Ruby2.1.4, Rails4.1.7で確認。

[rails]Strong Parametersでhashを許可する場合のやり方

Rails4.1.7, Ruby2.1.4 で確認。

[rails]脆弱性の静的解析ツールgem brakemanを使ってみる

パーフェクトRuby on Railsに載っていた脆弱性の静的解析gem brakemanを使ってみました。

[rails]コード品質の静的解析gem rails_best_practicesを使ってみる

パーフェクトRuby on Railsに載っていたコード品質の静的解析gem rails\_best\_practicesを使ってみました。

[rails]carrierwaveを使った画像投稿APIをRspecでテストしてみる

rails 4.1.7, rspec 3.1.7 で確認 先日、

Railsで小数点を含むURLのrouting設定

Rails3.2で小数点を含んだURLのrouting設定をしようとした際に、デフォルトの設定だとRoutingErrorになってしまいました。

[rails]ActiveModelを使ったフォームのラベル名を変更する

DBには保存はしないけれど、ActiveRecordオブジェクトのようにvalidationを使いたい、という場合にActiveModelが使えます。

[rails]cap deploy時に複数のAuto Scalingグループにもデプロイしたい

先日、AWSのAuto Scallingを使った際に、cap deploy時にAuto Scaleインスタンスにも自動でデプロイできるようにする必要があったので調べたところ、

[rails]Active Adminでcsv, xml, jsonのダウンロードリンクを非表示にする

デフォルトで付いているダウンロードリンクではなく、独自のcsvダウンロード機能を追加することがほとんどなので非表示にしています。

[rails]omniauth-google-oauth2を使ってGoogleアカウント認証をやってみる

これまでomniauthを使ったtwitter認証やfacebook認証は何度かやったことがあったのですが、Google認証はやってなかったので、「 omniauth-google-oauth2」を使ってGoogleアカウント認証をやってみました。