読者です 読者をやめる 読者になる 読者になる

Pebble's Diary

プログラマーの作業メモ

rails ログインのintegration testで失敗する原因

railsでログインのintegration testでCSRFエラーが出て、テストに失敗する。 ブラウザから実行した時はエラーにはならない。 延々、原因が分からず、かなり遠回りした結果、原因が判明した。 1) .bash_profileにRAILS_ENV=developを設定していると、rake tes…

rails 文字列に対するpresent?

nil? empty? はrubyのメソッドですが、 present? blank? はrailsのメソッドです。 文字列に対しては以下のようになります。 $ rails console Loading development environment (Rails 4.2.2) irb(main):001:0> a = nil => nil irb(main):002:0> b = " " => "…

rails ネストしたリソースのscaffoldを作る

ネストしたリソースのcontrollerやviewの書き方が分からなすぎるのでどうしたらいいものかと思ったら、そのものズバリ、ネストしたscaffoldを作るgemがありました。 GitHub - amatsuda/nested_scaffold: Nested scaffold generator for Rails 4.2 and 5 これ…

rails 基礎知識

railsは細かい部分の仕様の説明が明快に行われているドキュメントがない。トライアンドエラーで得た知見をメモしておく。 hoge.html.erb内で使えるクラスのインスタンス変数(@hoge,@fuga等)はコントローラークラスのインスタンス変数である。モデルクラスの…

railsアプリをunicornでCentOS7のsystemdで立ち上げる時のサービスファイルの書き方

/etc/systemd/systemにalpha.serviceというファイル名で以下の内容を作成する。ファイルに実行権限は不要。 どこか間違っている、過不足等いっぱいあるかも。またアプリはalphaというUnixユーザーで実行するようにしている。 railsバージョンは4.2.2 Databas…

rails mysqlで絵文字がDBに入る場合の注意

railsにてfixturesをloadしようとして次のようなエラーが出た。 ActiveRecord::StatementInvalid (Mysql2::Error: Incorrect string value: '\xF0\x9F\x98\x83\xE3\x81...' for column どうやら、UTF8で4バイトになる絵文字が入っているところでエラーになっ…

ruby BCryptダイジェスト

BCryptのrawハッシュ値(データベースのpassword_digestに入る文字列)は以下の4つを$で区切った文字列である。 @version, @cost, @salt, @hash 例えば、 "$2a$10$PqSI0YWw/JHk2zKWRF1ol.5pRtgJKPsJqJa8pvIn4IzatuxY.SPmu" をsplit('$')すると ["", "2a", "10…

ruby コマンドメモ

$ bundle open {gemname} でgemのソースが入ったフォルダをvimで開く 例えば、私の環境で $ bundle open crypt とすると、 vimのnetrwで "~/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/bcrypt-3.1.11" のフォルダが開かれる。

ruby 文法その5

class HelloWorld attr_accessor :name end セミコロンが付いていて、シンボルになっているのがミソ。 これは、以下のように書くのと同じ class HelloWorld def name @name end def name=(value) @name = value end end ここで@nameはインスタンス変数 引数…

指定のrails バージョンをインストールする

例えばrails 4.0.0をインストールする場合 gem install rails -v 4.0.0

Yosemiteにアップデート後bundle updateがコケる

YosemiteにOSをアップデートしたあと、bundle updateしたら、 fatal error: 'string.h' file not found となりjsonのインストールがこける。 Cのコンパイルで失敗しているようだが、標準インクルードファイルのパスが通っていない模様。 以下のコマンドで解…

rails で各コントローラー毎のcss,jsを読み込むようにする。

ほぼ参照サイトままです。 やったことは、3つ app/views/layouts/application.html.erb に以下の2行を追加。 <%= stylesheet_link_tag controller.controller_name, media: "all" %> <%= javascript_include_tag controller.controller_name %> app/assets…

railsでturbolinksを無効にする

Gemfile からturbolinksをコメントアウト # gem 'turbolinks' 2. bundle installし反映する。 3. app/views/layouts/application.html.erbから "data-turbolinks-track" => true の項目2つを削除する。 4. app/assets/javascripts/application.jsから //= r…

uninitialized constant SessionController

rails でこのエラーが起きたときはどこかのスペルが間違っていることを意味する。 SessionControllerを呼び出そうとしていることは分かるが、通常セッションコントローラーの名前は SessionsControllerである。つまり、どこかで間違ってsessionsと書くべきと…

rails4 コマンド 覚え書き

change_table :books do |t| t.string :author # string型のauthor列を追加 t.remove :published, :cd # published, cd列をsか削除 t.index :title # title列にインデックスを追加 t.rename :isbn, :isbn_code # isbn列をisbn_code列にリネーム end rake db:…

nginx+unicorn+railsで(13:Permission denied)

こんなメッセージ 2014/12/28 16:25:48 [crit] 4366#0: *7 connect() to unix:/home/pebble/wordhoard/tmp/sockets/wordhoard.socket failed (13: Permission denied) while connecting to upstream, client: 192.168.1.7, server: 192.168.1.l80, request: …

rails consoleでデバッグ

rails でエラーがでるリクエストをコンソールから投げる方法。 ここでは、GET APIを投げる場合の例である。 $ rails console irb(main)> app.get '/learningswithinfo.json?user_id=1'

railsでmysqlのデータベースの指定テーブルをローカルファイルにバックアップする

Gemfileに以下を追加します。 gem 'backup' gemをインストールし、pathを通す。 $ bundle install $ rbenv rehash Railsのルートフォルダで以下を実行する。 $ backup generate:model --trigger file_backup --archives --storages='local' --config-path='b…

mysqlインストール後に行うrailsのDB環境構築

DB環境構築のためのrailsのスクリプトは全て整っていることを前提とします。 mysqlルートユーザーでログイン $ mysql -u root -p mysql上にユーザーを作成する。 mysql>create user 'username'@'localhost' identified by 'password'; 作成したユーザーにデ…

railsでDBのテーブルに外部制約キーをつける場合の注意

railsでデータベースのテーブルに外部制約、CASCADE DELETEをつけたい場合は、 Gemfileにforeignerをつけてmigrateするか、SQLを手で作らないといけないらしい。 参考URL http://d.hatena.ne.jp/iriya_0624/20130427/1367082310 注意点として、 rake db:migr…

CentOS上のrailsアプリをapacheでポート80で動かす。

passengerというのはrailsで作ったアプリを80番ポートでapacheで動くようにしてくれるもの。apacheをソースからコンパイルし直す必要があるみたい。 後々、足りないと指摘されるので、事前に必要なモジュールをインストールしておく。 #yum -y install httpd…

CentOS6.4の特定ユーザー環境にruby2.0とrails4をインストールする手順書

事前準備 C/C++コンパイラのインストール sudo yum -y install gcc gcc-c++ develop用OpenSSLのインストール sudo yum -y install openssl-devel sqlite使う場合はdevelop用sqlite3のインストール sudo yum -y install sqlite3-devel ruby 2.2.0をインストー…

ruby on rails メモ

pythonに浸かってからrailsに戻ってきたら、きれいに全部忘れていた。。 もったいなさすぎるので、ruby on railsに関することはメモしておくことにする。 それにしても、rubyやpythonは省略記法がやたら多いので、同時にやってたら 間違えやすい気がするんだ…

MacOSX 10.8 + rails3.2 + postgresql + heroku

やっとMacOSX 10.8(Mountain Lion)環境にrails3.2、postgresqlを インストールし、herokuで動くようになった。 長かった。。 ハマりどころ満載だったぜ。。 以下、備忘録。 1) herokuでは最低限の環境であれば、無料で利用できる。 ただし、postgresql以外の…