Ruby

Ansibleのgemモジュールはuser_installがデフォルトになっている

gem - Manage Ruby gems — Ansible Documentation ドキュメントを見るとuser_installがdefaultでyesなことがわかると思う。何故この話題を取り上げるとかというとデフォルトの状態でgemモジュールを使ってインストールするとgem listには表示されるが実体が…

Ruby2.2以降でjson gem 1.8.1がインストールできない件の対応

結論 json 1.8.2以降を使用する 上記IssueでRuby2.2対応は1.8.2含まれたことがわかる。 表示されるエラー 恐らくrb_new_strの引数の数が変わった為エラーになっていると推測するが、Ruby2.2から変更になったという確かなソースはまだ見つけていない。 Instal…

Rails4.2 MinitestをRSpecに変更する

Railsプロジェクトを新規作成する際下記オプションを使用するとMinitestを除いたRailsプロジェクトが作成される。 $ rails new hoge -Tプロジェクト開始後途中でMinitestからRSpecに変更したくなった場合は何をすればいいのか? テストコードの移植等には触…

Rails4.2からNokogiriに依存するようになってた

Rails4.1からRails4.2にバージョン上げようとGemfile修正してbundle update叩いたらNokogiriのインストールでこけた。 確かにNokogiriをインストール準備はしてないから落ちるのはわかるんだけどいつから依存するようになったの?答えは4.2から。HTMLサニタ…

RVMのrvmrcはruby-version,ruby-gemsetに変更

久々にRVMをアップデートしてrvmrc作ったらWARNINGでた。 You are using '.rvmrc', it requires trusting, it is slower and it is not compatible with other ruby managers, you can switch to '.ruby-version' using 'rvm rvmrc to [.]ruby-version' rvmr…

Google chart toolsをRubyで使うためのwrapper

Google chart toolsを使いたくてwrapperを探していたらgooglechartsというgemに出会って GETパラメータに値渡してリクエストするだけでグラフが作成される!と喜んでいたのですが Google chart toolsのdocumentと色々違うので悩んでいたのですね。 https://g…

Ruby2.0系では多くのマジックコメントが不要に

[Ruby]Ruby2.0系では多くのマジックコメントが不要に Ruby2.0.0がリリースされてはや二ヶ月私の開発環境も2.0.0で動いておりますが大切な新機能を見落としておりました。 default UTF-8 encoding: 多くのマジックコメントが不要に http://www.ruby-lang.org/…

Ruby2.0.0-p0でRails3.2.12を動かすとModel#dupで落ちる

Railsのissuesに4ヶ月前に挙がっていた。3.2.13には適応されているので3.2.13を使うようにした。 https://github.com/rails/rails/pull/8405

FactoryGirlのTraits知らんかったいいな

TraitsTraits allow you to group attributes together and then apply them to any factory. factory :user, aliases: [:author] factory :story do title "My awesome story" author trait :published do published true end trait :unpublished do publis…

RSpecでTime.nowを起点にしたテストを書く時Timecopを使うと便利かも

たとえば現在時刻から3日前だったらこうなるべきみたいのをテストを書いてて 処理は3.days.agoとかだった場合に普通に書いてあると日数がたつとテストが通らなくなる。 https://github.com/travisjeffery/timecop そんな時は、Timecopでテストの時は時間を指…

Magick::Image.read #=> arrayなんでarrayなんだっけなって

はい An array containing 0 or more Image objects. If the file is a multi-image file such as an animated GIF or a Photoshop PSD file with multiple layers, the array contains an Image object for each image or layer in the file. RMagick 2.12.…

acts_as_listで例えばユーザ毎に並び順を保持する時

ユーザ毎にpositionを管理する例えばUser 1 - * Bookmarksみたいなとき関係あるところだけ書くと class User < ActiveRecord::Base has_many :bookmarks, order: 'position' end class Bookmark < ActiveRecord::Base belongs_to :user acts_as_list scope: …

ruby-buildでインストールできるRuby一覧を更新する

以前導入したrbenv+ruby-buildだが新しいRubyのバージョンをインストールするときインストール可能なリストを更新する方法がわからなかったので調べた。 以前の記事:rbenv+ruby-build+rbenv-gemsetのセットアップ - chulip.org 結論からいうとruby-buildが…

WindowsでNativeExtensionを入れるためにDevelopment-Kitを入れる

なんかDevKitを入れろと言われています。 Windows.Ruby.native extensions......... Installing json (1.7.5) Gem::InstallError: The 'json' native gem requires installed build tools. Please update your PATH to include build tools or download the …

capistrano-extで複数の環境にdeployする設定を書く

Gemfile gem 'capistrano-ext'config/deploy.rb # 追記 require "capistrano/ext/multistage"環境用の設定ファイルを格納するディレクトリ $ mkdir -p config/deployconfig/deploy/stage.rbを作ったらcap stage deployみたいな感じで環境のデプロイできる。 …

rbenv+ruby-build+rbenv-gemsetのセットアップ

手元の環境ではRVMをまだ使っているのだが別に構築する機会があったので今更rbenvを。 rbenv https://github.com/sstephenson/rbenv 手順はGithubのREADME通り $ cd $ git clone git://github.com/sstephenson/rbenv.git .rbenv $ echo 'export PATH="$HOME/…

FactoryGirlでカラム名typeのデータをセットできない

1.2.4で起きた。下記URLにある通りなので備忘録 Model with the column "type" breaks factory · Issue #43 · thoughtbot/factory_girl · GitHub f.add_attribute :type, type https://github.com/thoughtbot/factory_girl/issues/43

Ruby Association Certified Ruby Programmer Silver合格しました

タイトルすごい長いですけど要するにRuby技術者認定試験Silverですね。 不合格だったら受験したことを黒歴史にしようと思っていたのですが、受かったので。 75点以上で合格なんですけど90点でした。 公式ガイドの模擬問題みたいなの解いた段階ではぎりぎりア…

Rcovでコードカバレッジ

ソースコードがどの程度テストされているかみたいな物を見ることができる カバレッジ第一ってのはあんまり…っていう話は聞くので参考程度に。まあ使った事無いので使ってみたって話 環境 Rails2系 RSpec 1.3.2 RSpec-rails 1.3.4 Rcov 0.9.11(gem installし…

factory_girlでのparent指定と関連の定義

今更factory_girl v1.3.3の話factory_girlでデータ定義していくときに少しだけ値が違うみたいな時は 継承してdefineできる #-*- coding: utf-8 -*- Factory.define :madoka do |f| f.first_name 'kaname' f.last_name 'madoka' end Factory.define(:homura, …

rakとかackとかで半角カナを検索する

文字コードはUTF-8Google先生に聞いたらでてきたはでてきたんだけど一部記号とか対象になっていたのでメモ。 $ ack "(?:\xEF\xBD[\xA7-\xBF]|\xEF\xBE[\x80-\x9F])" ## または $ rak "(?:\xEF\xBD[\xA7-\xBF]|\xEF\xBE[\x80-\x9F])"参考サイト Unicode対応 …

ref.vimでRubyのリファレンスを見る

ref.vimというプラグインがあるのは知っていたんだけど使ってなかった。 ブラウザからリファレンスを見る機会が多いなと思っていたので試してみた。ref.vimからRubyのリファレンスを見るときにはrefeというリファレンスマニュアル検索ツールを使える refe Ru…

Ruby1.8.6と1.8.7のHash[*key_and_value]の挙動について

Ruby1.8.6でsassがodd number of arguments for Hash (ArgumentError)ってエラー吐いて動かないので調べた。 生成するハッシュのkey,valueに配列が含まれる場合1.8.6だとこのエラーになる。1.8.7は動く Ruby1.8.6リファレンス http://doc.okkez.net/static/1…

RVMの最新のリリースバージョンでエラーが出た

Mac OS X 10.7の話 $ rvm get latest $ rvm --version #=> rvm 1.6.25 by Wayne E. Seguin (wayneeseguin@gmail.com) [https://rvm.beginrescueend.com/] rvm useを実行するたびにエラーが出るようになった $ rvm use 1.9.2 Using /Users/arcright/.rvm/gems…

RubyKaigi2011 3日目参加…して…きた

寝坊して最後の基調講演しか聞けませんでした!!! 振子とPGと百年の言語 / まつもとゆきひろ氏 無駄にハードルを上げないでほしい肩書きコレクター 1997 ネットワーク応用通信研究所フェロー 2007 楽天 技術研究所 フェロー 2009 松江市名誉市民 島根大学 …

RubyKaigi2011 2日目参加してきた

今日も一日大ホール。少し遅れて最初のセッションの途中から参加 安全なプログラムの作り方 / 西山和広氏 脆弱性があってもパーミッションによって被害を抑えられる 正規表現の^ $と\A \z(\Z)を使い分ける ^ : 行頭 $ : 行末 \A : 文字列の先頭 \z : 文字列…

RubyKaigi2011 1日目参加してきた

今日は1日大ホールにいて闇Rubykaigi最後までみて帰宅 メモを少しまとめてつらつらと 開会の辞 / 高橋征義氏 最高のRuby会議になるように プログラムについて / 笹田耕一氏 これまでのRuby会議の振り返り 今回応募倍率は1.6倍!! Ruby会議はRuby本体に関する…

RSpecでテストするときにfactory_girlを使う

fixturesが担っていたテストデータのところにfactory_girlを使うイメージ? 複数テーブルにまたがるデータを定義するときにfixturesより格段にやりやすいみたい。 その利点はまだ実感できてないけどとりあえず使い方 環境 Rails3,bundle全盛だけどRails2の話…

RSpecのSubjectについて

subjectを使うとsubjectの値がitのレシーバになる為、共通のレシーバについてテストを書くときに便利 # -*- config: utf-8 -*- require 'rspec' describe 'homu' do before do @homu = "hoge" end subject { @homu } it { should == "hoge" } it { should be…

Ruby1.9.2からはrequireの$LOAD_PATHにカレントディレクトリが含まれない

覚えていると全く問題ないんだけどど忘れすると混乱するのでメモ とりあえず明示的にカレントディレクトリのを読むようにした # -*- coding: utf-8 -*- require './hoge'