ピスタチオを食べながらrailsを楽しむ

ピスタチオ大好きな著者のrailsを使ったツール作成の日記です。

新しいmacにiOS Developerの証明書を移す

久しぶりに備忘録として書いておかないと忘れそうなことがあったのでメモ。 やりたいこと 古いマシンから新しいマシンへアップルのデベロッパー証明書を移したい 背景 アップル様にデベロッパーとしてお布施、デベロッパーの証明書をマシンにインスコ アップ…

Make sure that `gem install sqlite3 -v '1.3.10'` succeeds before bundling.と出たら

An error occurred while installing sqlite3 (1.3.10), and Bundler cannot continue. Make sure that `gem install sqlite3 -v '1.3.10'` succeeds before bundling. この手のエラーが出たらもっと上を読もう。 そこに本当のヒントがある。これだ。 'yum i…

Railsでslimを使って動的なidなりclassを指定する方法

忘れそうなのでメモ。 div*{id: "#{@instance_variable_1}", class: "#{@instance_variable_2} container-fluid"}

はてなでの特定ユーザーブコメあぼーん機能

誰か知らない? 「うーむ」とか連発しているbotっぽいコメントを見るとイラッとするのでそのユーザーだけあぼーんしたいんだけどやり方が分からない。 当該ユーザーを非表示に追加してみたけど残念ながら表示されてしまう。

cocos2d-jsをインストールする

趣味でゲーム開発をしたく色々と検討したが実績が豊富、jsの知識が活かせる、マルチプラットフォーム対応が可能等の理由からcocos2d-jsを試してみることになったので自分メモ。 参考サイト 【2Dゲームフレームワーク】Cocos2d-JS開発環境の作り方 - NAVER ま…

awsでs3のbucketを中身ごと削除する

awsでアカウントを跨いだバケットの移行が必要になり、試行錯誤するのにバケットの中身ごと一括削除するケースが頻発した。 awsのcliをインストールしている前提で以下のコマンドで一括削除できる。 aws s3 rb s3://hogehoge --force 確認なしで削除が始まる…

2つ先のassociationテーブルをjoinしwhereする

特定のmodelの関連先のフィールドに対してクエリを掛けたいケースへの対応。 以下のようなmodelがあるとする。 # app/models/book.rb class Book < ActiveRecord::Base has_many :authors end class Author < ActiveRecord::Base has_many :author_books acc…

Bootstrap内でmodal内からajaxリクエストした場合にmodalをhideにしても消えない場合の対処

modal内からajaxリクエストした場合にmodalが残ってしまう事象が発生。 modalといってもフォームは消えてmodalの背景のみ残ってしまい操作が出来なくなる。 似たようなところでハマった人は結構いるっぽい。 How to hide Bootstrap modal from javascript?st…

hashをtryする

tryメソッドは例外を発生させずにメソッドを実行できるメソッド(たぶん。認識に齟齬があればご指摘頂けると嬉しいです!)。 returnが存在すればそれを、存在しない場合にはnilを返してくれるので例外が発生せず、色んな場面で使える。 e.g. @person.try(:n…

Homebrewの更新でpgのバージョンが変わってしまった場合の対処

rubyのバージョンを上げようと思いhomebrew本体とruby-build、rbenvの更新をしたがどうやらその際にpgも一緒に更新してしまっていた。 開発端末を再起動したところDBを正しく認識できなくなりエラー出力からどうやらpgのバージョンで問題が起きているとのこ…

homebrewの更新でrailsが動かなくなった場合の対処

postgres関連でエラーが発生したっぽい。 /Users/username/.rbenv/versions/1.9.3-p484/gemsets/sandbox/gems/activesupport-3.2.11/lib/active_support/dependencies.rb:251:in `require': dlopen(/Users/username/.rbenv/versions/1.9.3-p484/gemsets/sand…

rbenvでバージョンを変えたのにbundle installが出来ない場合

ruby2.2.0をインストールしたがその際にハマった。 rehashしてlocalのrubyバージョン変更ももちろん済んでいる。 軽くググるとすぐに参考となる記事があった。 rbenvでRuby2.2をインストールする。 - Qiita どうやらbundlerも更新しないといけないらしい。 …

Kaminariをjsonでajax化する

Kaminariは便利だがネット上のソースを見るとjs.erbで対応しているものが多い。 (というかKaminariに限らずajaxはjs.erbばかりだった)ので、備忘録も兼ねて。 手順 はじめに ajax化 リファクタリング(おまけ) はじめに まずは普通に実装。Kaminariを使え…

rake routesコマンドで特定のリソースのみ確認する

rake routesコマンドを使うと現在のリソース一覧が見れる。 rake routes 今日初めて知ったがこれにgrepを使うことで特定のリソースのみ表示ができる。 rake routes | grep hogehoge

1対多の関係で同時に作成/更新する

1対多の関係で"1"を作成(更新)する際に"多"も一緒に作成(更新)する。 例。 UserとAccountがある。 User作成時にUserに関連するAccountを作成したい。 Accountは同時に複数作成したい。 以下サンプル。migrationファイルは以下のような感じ。 便宜上index…

newからPOSTしたのになぜかcreateアクションに飛ばずindexに来てしまう場合

すごく瑣末な問題だったが忘れそうなので備忘録。 なお、環境は3.2。 # config/routes.rb Chatters::Application.routes.draw do ~~~~~~~~様々な処理~~~~~ match '*path' => 'application#error404' resources :users, only: [:new, :create, :index] end ど…

Bootstrapのfile inputをキレイに整える(Rails4,form-horizontal)

他にも記事はたくさんあるがRails4でgemを使わない方法が見つからなかったので備忘録のために投稿。 実際にfileをアップロードするためのフィールドは隠す 隠したフィールドを使うためにbtn(又はlabel)にclassを指定し擬似的にクリックさせる 実際にアップ…

新しくrailsプロジェクトを始めた(git clone)

以下、tips・・・というわけでもなくただの作業備忘録。 mkdir 2.1.1 #=>新プロジェクトで使うrubyのバージョン用 cd 2.1.1 git clone git@github.com:username/newproject.git rbenv install --list #=>2.1.1があるか確認 rbenv install 2.1.1 rbenv local …

bootstrapでtooltipを使う

tooltipとは 特定の要素に吹き出し型のテキストを表示出来る。 # app/assets/javascripts/tooltips.js.coffee jQuery -> $(".tooltip").tooltip() # app/views/tooltips/index.html.erb <div> <span class="tooltip">これ</span>がツールチップです。 </div> この状態でこれにカーソルを合わせるとtoo…

はてなブログで見たまま編集したものをmarkdownで更新する

方法は簡単。 "見たまま編集"で作成した記事を編集する "見たまま編集"状態で記事を全てコピーする ブラウザ側で別タブを開きmarkdownで設定している状態で新規記事を作成する 新規記事側でコピーしたものをペーストしmarkdown記法で編集 新規記事側でプレビ…

nginxのproxy_set_headerが適用されない場合

proxy_set_headerの前にproxy_passを書かなくてはいけない。このルールを知らなかった。 proxy_pass http://upstream_name; #=>proxy_set_headerより前に書く!! proxy_set_header X-Forwarded-Ssl on; proxy_set_header hogehoge; これでOK!!

Railsで最終更新日時を取得する

以下の方法で取得出来た。 <% @users.each do |user| %> <%= user.tasks.order(:updated_at).last %> #=>更新日時が最後のtaskオブジェクトを取得 <%= user.tasks.order(:updated_at).last.updated_at.in_time_zone('Tokyo').strftime('%Y/%m/%d %H:%M:%S') …

Dateの比較演算が失敗したときの対処

結論から書くと比較対象にnullなデータが含まれていた。 nullは比較演算ができないためエラーが発生。 undefined method `<=' for nil:NilClassというエラーが出ていた。 実際のコードは以下のとおり。 <%= link_to "hogehoge", hogehoge_path, class: "#{ '…

bootstrapでinput-group-btnを使ったときのwidthの変更方法

ググっても有力な情報が見つからなかったので備忘として記録。 <div class="input-group"> <%= f.text-field :name, class: "form-control" %> <span class="input-group-btn"> <f.submit "更新", class: "btn btn-primary" %> <%= button_tag class: "btn btn-default", type: :button do %> <span class="glyphicon glyphicon-remove"></span> <% end %> …</f.submit></span></div>

tr要素にdata属性をrailsっぽく付ける

他に方法を知らない&忘れそうなので備忘録。 <%= content_tag "tr", class: "hoge fuga", data: { abc: hogehoge, def: fugafuga} do %> <td></td> <% end %>

centOS6.5+unicorn+nginx+独自ドメイン(ムームー)でSSLを導入する

概要 手順として以下の作業が必要となる。 SSL証明書取得準備 SSL証明書取得 SSL証明書をサーバに設置 nginx側でSSLの設定 SSLはrapidSSLにする。理由は安く実績もそれなりにあるため。 SSL証明書取得準備 まず前提としてwhoisの公開代行をしているとSSLの審…

ransackで[:q]を違う文字列にする

同一ページ内に複数のテーブルを表示、それぞれの検索フォームが必要となったため調べた。 # app/controllers/tasks_controller.rb def index @search = Task.search(params[:q]) @different_search = Different.search(params[:different], search_key: :di…

ransack+kaminari

メモメモ autopagerizeのような動作をkaminariとransackを使った環境で実装した - @znz blog

アーカイブ機能の実装について

アーカイブ機能を実装してみた。 条件は以下の通り。 ・statusがtrueになっている 且つ ・最終更新日時から1時間を経過している のどちらにも該当したものはリストから除外する。 アーカイブ側は上記条件通りにwhereを書けば良いので単純。 def archive @arc…

railsで動的にclassを追加する

要素のclass(やid)を動的に追加したいという場面があった。 結論としてはどちらもその通り書けば良かった。 <span class="<%= 'text-muted' if task.status? %>"></span> この場合だとtaskのステータスがtrueの場合のみtext-mutedがspan要素に付加されることとなる。