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

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…

Rubyばっか書いてる人のためのJavaScriptのオブジェクト指向世界入門

まずRubyでのオブジェクト指向と言語要素に慣れている場合はJavaScriptのオブジェクト指向でかなり違和感を覚えるような気がします。 JSは全てがオブジェクト (プロトタイプベース:後述) なんかRubyの言ってることと似ているが伝えたい意図が全く違う JSのオ…

個人用としてのIaaS/PasS比較

今使ってる個人用仮想サーバーがGMOのVPSで、結構前から使っててCentOSがめちゃくちゃ古かったり(5.5だったw)、そのプラン自体がそろそろなくなってしまうということだったり、寿司を送り合うコミュニケーションツールを作ってるのでせっかくそれをデプロイ…

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

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

MySQLが落ちる現象の原因を探る

/etc/mysql/my.cnfを見てlogファイルの場所を確かめる。 /log/mysql/log/error.logだったので、見てみる。エラーが出ている。 怪しそうなメッセージをかたっぱしからググってみる。 たどり着いたのはstack over flowの以下の質問。 mysql error The InnoDB m…

swap領域の設定の仕方

以下を参考にswap領域の設定を行ったのでメモしておきます。 https://www.digitalocean.com/community/tutorials/how-to-add-swap-on-ubuntu-14-04 使用するOSはubuntuです。 swap領域の確認 swap領域の確認の仕方で一般的なのは、swaponとfreeコマンドです…

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…

mysqld dead but subsys locked

mysqlを起動させようとしたら、次のようなエラーが出てしまった。 $ sudo service mysqld start mysqld dead but subsys locked 前回は確かmysqlを再起動したら直った気がするけど、今回は直らなかった。 /var/log/mysql.logのERROR部分をみると、以下のよう…

ItamaeのレシピをVagrantに流し込んで環境構築

Itamaeを使ってVagrantの環境構築をするためのgemとして、vagrant-itamaeというものを作ってくださってるようなので、これを使います。 https://github.com/chiastolite/vagrant-itamae vagrantにpluginとしてインストールします。 $ vagrant plugin install…

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

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

ActiveRecord::Base#reloadの使い方

ARインスタンスをデータベースから再取得する。 例えば別のリクエストで発生したプロセスがDBのカラムを変更したときに、インスタンスにはもちろん反映されない。 変更されたRDBの内容をインスタンスに反映させるのがこのActiveRecord::Base#reloadというわ…

nginxを使ったSSLの設定

参考 Rapid SSLの公式 (nginx) https://knowledge.rapidssl.com/support/ssl-certificate-support/index?page=content&actp=CROSSLINK&id=SO17664 nginx連載6回目: nginxの設定、その4 - TLS/SSLの設定 http://heartbeats.jp/hbblog/2012/06/nginx06.html お…

RailsでHTTPS通信

Railsで全ページのSSL通信を強制するには、configファイルで、 MyApp::Application.configure do # ... # Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies. config.force_ssl = true # ... end とすればいけ…

Railsの4.2.5 RC2を使う

つい先日(2015/11/06)、Railsの4.2.5のRC版が出ましたね。 http://weblog.rubyonrails.org/releases/ 大江戸Ruby会議で、Rails Guidesのコミッタ、Railsなどにコントリビュートされてる @spikeolaf さんに「RC版でたよね!使ってみてよ!」と言っていただい…

ライトにHTTPレスポンス監視しとくスクリプト書いた

DNS変更してるときに、なんか気軽に、200になったら通知してくれるスクリプトがほしいなと思って書いてみました。 while true do RESULT=`curl --head sample.com | grep HTTP` echo $RESULT if [[ $RESULT =~ "200" ]]; then osascript -e 'display notific…

コマンドラインからMacのnotificationを出す方法

ターミナルからMacの通知を出したいなと思い調べてみました。 以下にありました。 apple.stackexchange.com 最初のdisplayコマンドでは動かず。 AppleScriptの方法で動きました。 osascript -e 'display notification "Lorem ipsum dolor sit amet" with tit…

読んで理解するActiveRecordの設計とActiveSupport::Concern - メタプロRuby第二版

最近Fincでインターンをしている友人が社内勉強会をひらいているということで、そこに強引に参加させてもらってます(ありがとうございますありがとうございます) 今はメタプログラミングRubyを進めております。(この前2版が出たので急いで切り替えた!) 毎週…

HTML5を意識したView Helperを使おう

date_selectメソッドとかではダメで、date_fieldでないとtype="date"がついてくれないことに気づいた。 HTML5から、type="date"が追加されて、ブラウザによって対応は違うものの、このtypeを付随させることのメリットは大きい。 http://dev.classmethod.jp/r…

Railsでmaterializeを使う

bootstrapのdiv地獄から抜け出したいと思った僕たちは、materializeを使うことにしました。 http://materializecss.com/ bowerでinstallする例も見かけますが、fontで不具合が起こったなどの投稿もみかけたので、gemでいれちゃいます。 https://github.com/m…

ディレクトリ内の全ファイルのソースコードの行数を数える

例えば *.rbなファイルだけ対象にしたければ、ディレクトリ内で以下のようにすればおけ。 $ wc -l `find ./* -name '*.rb'` Rails数えてみたら、279929 totalでした。でかい。

Itamaeレシピ集 - Ruby/nginx/MySQL/Redis/etc

Itamaeを使ってみる。 選定基準は、 Rubyの内部DSLで書きたい Ansibleだとそのご期待に添えない でもchefはフルスタックすぎて学習コストが高い... ということでItamae :+1: :+1: みたいな感じです。基本的にRails使うような想定をしております! 構成 以下…

Wordpress(php-fpm)のボトルネックを探る

この記事では、原因を探るためのプロセスをメモしてるので、直接の問題解決に対してのアプローチとしてはいささか冗長であるので、結論を先に書くとプラグインのせいでした。 問題の解決方法だけ知りたい方はプラグインのところまでお読み飛ばしください。 …

PostgreSQLのinet型とはなんなのか

今作ってるサービスをPostgreSQLからMySQLに移行したときに、migrateファイルで「inetなんてメソッドないよ!」って言われてしまった。 inet...?って思ってmigrationファイルを見てみると、どうやら型の名前みたいだ。PostgreSQL専用の型なのかな?と思って…

nginxでサブディレクトリに配置したWordpressが動かないや -> パーマリンクの設定だった

HTTPサーバーはnginxで、Railsアプリをルートに、特定のサブディレクトリのときだけWordpressを動かしたいって感じの設定をしているのだけど、動きません。 nginxは、Rails(unicorn)用とWordpress(fast-fpm)用のvirtualhostを2つ作って、最初は後者にリクエ…

FactoryGirlのcreate strategyを追ってみる

FactoryGirlで、associationメソッドのaliasでuserみたいにassociationのある関連データを生成できるようになった。 動的メソッド感がプンプンするので、知りたいと思ったのでこれを追ってみることにする。 まずはrunnerのrunメソッドから。ここから全てが始…