zakihayaメモ

RubyとRailsのことが中心

リポジトリをGitHubに変更してCircle CIで自動デプロイしようとしたら大ハマリした

今更ながらCircle CIを使ってみる 前から興味があったCircle CIでの自動デプロイを、機会があったので試してみました。 リポジトリをBitbucketからGitHubに変えて、Circle CIに登録してデプロイできるようになるまで8時間。。。 いい経験にはなりましたが大…

haml使用時に値が無い属性(itemscope)などを追加する

<div itemscope>・・・</div> のような感じで表示させたい場合は %div{ itemscope: true } とすればOK。

RubyのバッチでGoogleAnalyticsのデータを取得する(OAuth2利用)

Garbが使えなくなった・・・ もともとはGarbというgemを使ってアクセス数を取得するバッチを作っていたのですが、急にGoogleにログインができなくなってしまいました。。 Sija/garb · GitHub いろいろと見てみると、Google APIがOAuth2以外の認証を受け付け…

Railsでメールを送信する機能を実装する時はmailcatcherを使うと便利

Webアプリを作っていると、メールを送信する機能を作ることがよくあるかと思います。 そんな時はmailcatcherというgemを使うと、仮想SMTPのような形で使えるので便利です。 準備 Gemfileを更新して、 bundle install します。 # Gemfile group :development …

bundlerを使ってGemを作成する

Gemの作り方を勉強するために、どうしようもないGemを作ってみます。 テストを作成し、Travis CIで自動テストができることが目標です。 ソースはこちら zakihaya/hello-zakihaya · GitHub Gemを作成する準備 Gemの雛形を作成する $ bundle gem hello_zakihay…

MySQL varcharのlengthはバイト数ではなく文字数

varchar(255)だったら、全角でも255文字まで入る。よく忘れるのでメモ。 エキスパートのためのMySQL[運用+管理]トラブルシューティングガイド作者: 奥野幹也出版社/メーカー: 技術評論社発売日: 2010/06/12メディア: 大型本購入: 16人 クリック: 204回この商…

Macで使う言語を英語にしたらgit logがおかしくなった

Mac

英語を勉強したいなーと思ってMacのシステム言語をEnglishに変更しました。そうしたらgit logが<A0>みたいな文字列になってしまったので、その対処法。 〜参考にさせて頂きました How to fix locale issues in Mac OS X Lion terminal (Mountain Lion has …

has_manyな関連にbuildした後にsortを実行したい

[Rails] has_many through な関連をチェックボックスで操作するときに苦労した話 | ハレノヒブログこちらのページを参考に、WordPressのカテゴリー選択UIみたいのを作りました。 が、これだと選択されたカテゴリが上に来てしまってソート順が無効になってし…

AWS VPC内にRDSでDBを作成する

AWS VPCでセグメントを分けてサーバを管理する - zakihayaメモ AWS VPC内にアプリケーションサーバを作成する - zakihayaメモ の続きです。DBを作成して、アプリケーションサーバから接続できることを確認します。 RDSからVPCを利用するための設定 1) AWSに…

AWS VPC内にアプリケーションサーバを作成する

AWS VPCでセグメントを分けてサーバを管理する - zakihayaメモ の続きです。VPCとサブネットを作成したので、public subnetにアプリケーションサーバを作成します。 EC2インスタンスの作成 1) AWSにログイン → EC2を選択2) Launch Instanceをクリック3) Amaz…

AWS VPCでセグメントを分けてサーバを管理する

VPCとは Amazon Virtual Private Cloud(Amazon VPC)で、アマゾン ウェブ サービス(AWS)クラウドの論理的に分離したセクションを確保し、ここで、お客様が定義する仮想ネットワークで AWS リソースを起動することができます。独自の IP アドレスレンジの…

AWS入門 IAMでユーザー管理をする

自分は結構前からAWSは使っているのですが、正直EC2でインスタンス作って運用しかしてません。 そこで、いろんなサービスをいじってみることにしました。まずはIAMから。 IAMとは IAM を使用すると、AWS のユーザーとグループを作成および管理し、アクセス権…

OS X Marvericksで最新のXCodeを入れてbundle installするとエラーになる

開発用のMacが来たので、リポジトリからソースを取ってきてbundle installをすると、下のようなエラーが発生する。 Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension. /System/Library/Frameworks/Ruby.framework/Version…

Rails4でsessionの格納先をactive_record_storeにする

Rails4でsessionの格納にActiveRecordを使うやり方。 gemを追加 # Gemfile gem 'activerecord-session_store', github: 'rails/activerecord-session_store' gemをインストール $ bundle installセッションを格納するテーブルをcreateするmigrationを作成 $ …

Paperclipでadd_attachmentする時にafterを指定したい

これを実行すると class AddAttachmentToUsers < ActiveRecord::Migration def change add_attachment :users, :avatar, after: 'name' end end usersテーブルに下の列が追加されてしまいます。 avater_file_name avater_content_type avater_file_size avat…

連休を使ってJavaScriptまわりを勉強する

underscore.js メソッド名がRubyっぽいJavaScriptのライブラリくらいの認識しか無かったが、 使ってみるとこれは相当便利。 今まで使っていなかった事を本気で悔やみました。Underscoreドキュメント日本語訳便利機能満載のライブラリUnderscore.js - にのせ…

lazy_high_chartsでlabelsにformatterを使う場合

こんな感じにすればOK f.yAxis[ {:title => {:text => '降水量'}, :labels => {:formatter => %q|function(){return this.value +'mm';}|.js_code}} ] 参考 :formatter not working for dataLabels · Issue #73 · michelson/lazy_high_charts · GitHub

Rails4でActiveAdminを使ってみる

Railsで簡単に管理画面を作れる系のgem。Ruby Toolboxを見たところActiveAdminが一番人気があるっぽい。 使ったことがあるRailsAdminにしようかと思ったが、せっかくなので試してみた。gregbell/active_admin · GitHub Gemfileに記入 RubyGems.org のはバー…

第2回アフィリエイトソンに参加してきました

6月に行われたアフィリエイトソンの結果が発表され、なんと準優勝しました!商品の世界のビール詰め合わせが届いたのですが1ヶ月半くらいお預け。。。 お酒が解禁されたら飲みますのでビール好きの方はご連絡ください。サイトはこちら 楽天で高評価のワイン…

hamlで行末に改行を表示しないようにする

タグの周囲の改行を表示しないようにするには > を使う。 タグ内のスペースなどを除去する場合は 何もしない書き方 haml %div %span a html <div> <span> a </span> </div> > を使う haml %div %span> a html <div><span> a </span></div> haml %div %span< a html <div> <span>a</span> </div> 参考 http://haml.info/docs/yardoc/fil…

Webサイトにストリートビューを表示する

どんどん便利になっていくなぁ。【仕様】 #mapAddressに住所が入っている #gMapに地図を表示する #gViewにストリートビューを表示する var geocoder = new google.maps.Geocoder(); geocoder.geocode( { 'address': $('#mapAddress').val(),'region': 'jp'},…

Capistranoを使う時はブランチ名をdeployにしてはいけない

アプリをデプロイしようとコマンドを打っても全くうまくいかない。 スペルミスも無いのになぜだろうと思ったら、ちゃんとエラーが出てた。 fatal: A branch named 'deploy' already exists. どうやらCapistrano内部でdeployブランチを作って、それをサーバに…

街コンで成功するためにするべきたった1つの事

飯食いに外に出たら街コン参加者の大行列ができてる。まだ流行ってるんだな。 裏技をこっそりお教えするので、今後参加する方がいたらご参考に。 久しぶりのブログがこんなでいいのかわからないが。。。 街コンのシステム 男性2人または女性2人のペアで参加…

Macが来たのでイチから設定してみる(アプリ)

最後にアプリケーションのインストールと設定。Growl - The Growl Project 今までは古いバージョンのを無料で使ってたが、せっかく新しいのにしたので今回は購入。

Macが来たのでイチから設定してみる(IME、キーボード)

続いてキー入力まわり。 Google日本語入力 Google日本語入力のインストール 一度使ってしまうとことえりには戻れないなあ。 ダウンロードしてインストール。 Google 日本語入力 ことえりを無効にする ことえりは不要なので無効にする。 システム環境設定→言…

Macが来たのでイチから設定してみる(システム環境設定)

Mac

きましたよー新しいMacBookAir。会社Macの設定をそのまま移行しようかとも思ったのだけど、 不要なものが多そうだったので整理しながら設定してみる。 木曜の夜までに設定完了したい、終わるかな。。。とりあえず初日はシステム環境設定から。 Dock Dock を…

Hash#mapとHash#selectのブロック引数の違いでハマる

ブロック引数が1つのmapで作っていたソースをコピーしてselectをやろうとしたら うまくいかなくて困った。 Hash#mapはブロック引数が1つの時と2つの時で挙動が違う 引数が1つの時 keyとvalueが配列に入ってくる {a: 1, b: 2, c: 3}.map{|val1| puts "val1=#{…

AASMのReadmeを日本語訳してみた

AASMはRubyのクラスにステートマシンパターンを追加できるライブラリです。 業務で使うことがあったので訳してみました。初の試みなので、おかしい点などがあればばしばし指摘してください。元ページ aasm/aasm · GitHub AASM - Rubyのステートマシン このパ…

find_or_create_by・・・が素敵すぎる!

今さら知ったのかよ感がありますが、こんな便利メソッドがあったんですね。 知らなかった!こいつを使うと user = User.find_by_name("zakihaya") || User.new(name: "zakihaya") が user = User.find_or_create_by_name("zakihaya") になる!Rails4からは下…

EC2上のCentOSにFirefoxをインストールする

ハマったのでメモInstall Firefox on Amazon Linux x86_64 Compiling GTK+ | JoeKiller

Object#tryでインデクサを対象にする

まずはObject#tryについて def try(method, *args, &block) ・・・ end なんと!ブロックも使えるのか、知らなかった。tryを使うと @object ? @object.name : nil が @object.try(:name) こんな感じで書けるようになります。 モデルのインスタンスを扱う時と…

Railsアプリを作る時の基本設定

自分用にメモGemfile source 'https://rubygems.org' gem 'rails', '3.2.6' # Bundle edge Rails instead: # gem 'rails', :git => 'git://github.com/rails/rails.git' gem 'sqlite3' gem 'mysql2' gem 'haml-rails' # Gems used only for assets and not r…

rails s を実行すると uninitialized constant Syck::MergeKey (NameError) というエラーが発生する

localhost $ bundle exec rails s localhost $ RAILS_ROOT/vendor/bundle/ruby/1.9.1/gems/configatron-2.8.0/lib/configatron/store.rb:324:in `<class:Store>': uninitialized constant Syck::MergeKey (NameError)こんなエラーが出るのでなんだろうなーと思って30分く</class:store>…

fluentdを使ってnginxのログを溜めてみるメモ

まずはローカルのファイルにログをためてみる fluentdインストール td-agentというパッケージを使う。参考 Installing td-agent for Redhat and CentOS / Installing td-agent daemon / Knowledge Base - Treasure Data Platform Support [root@localhost ~]…

ホットコーナーを利用してお手軽に画面をロックする

Mac

WindowsでいうWindowsキー+lショートカットみたいなのがMacにも無いのかなーと思っていたら、ちょっと違うけど方法を発見しました。OSは10.7 Lionです。 システム環境設定で「デスクトップとスクリーンセーバ」を選ぶ スクリーンセーバーのほうを選んで、左…

I18n.tメソッド

今動いているサイトのソースを見たら t 'activerecord.users.name' みたいのがいて、tってなんだろうと思い調べてみた。 どうやらtranslateメソッドの短縮形らしい。 同じようなのでlocalizeメソッドもあるらしい。 I18n.translate "store.title" I18n.local…

Finderにdotfileを表示する方法

「Command」キー+「Shift」キー+「 . 」(ピリオド)を入力すると、 「 . 」で始まるファイルが見えるようになる!

MacからCentOSへ公開鍵認証を使ってSSH接続する

環境 ローカル OS X Lion ホスト CentOS6.2 ローカルでの作業 鍵ファイルを作成する $ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/Users/username/.ssh/id_rsa): # Enterを押す Enter passphrase (e…

RSpec::Mocksが少しだけわかったので、忘れないようにまとめておく

用語 テストダブル テストコードの中で別のオブジェクトの代役を務めるオブジェクト メソッドスタブ レスポンスを自由に定義できるメソッド メッセージエクスペクテーション コールされることが保証されるメソッドスタブ テスト対象コード class Statement d…

勉強会初心者のための勉強会(#study4bg) 2012年初春の陣に行ってきました

勉強会初心者のための勉強会(#study4bg) 2012年初春の陣 : ATND粕谷大輔さん(@daiksy)の勉強会についてのお話しと、自己紹介をネタにしてLTをやってみましょうというものでした。 粕谷さんによる講演:「勉強会について」 勉強会に集まる人たちは天上人で…

Gemfileの ~> の意味

Gemfileを見ていたら「gem "thin", "~>1.1" 」という指定が。 ~>ってなんだろうと思い調べてみた。mg ☂. » [bundler]Bunderを使ったGem管理のメモ Most of the version specifiers, like >= 1.0, are self-explanatory. The specifier ~> has a special mean…

remove_methodとundef_method

メソッドを未定義化する時に用いるremove_methodとundef_methodの違い。・remove_method スーパークラスに同名のメソッドがある場合は、そのメソッドが残る。・undef_method スーパークラスに同名のメソッドがあっても、完全にそのメソッドを未定義化する。

cannot rollback - no transaction is activeというエラーが発生する

ある時から急に「cannot rollback - no transaction is active」というエラーが発生するようになった。 それもタイミングが微妙で、あるモデルのレコードを作成する時は発生しないが、更新する時に発生する。何だかわからず調べていたらそれっぽい投稿を発見…

【Objective-C】アラートビューの使い方

OKだけのアラートビューを作成する UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Alert Test" message:@"OKのみです" delegate:self cancelButtonTitle:nil otherButtonTitles:@"OK", nil]; OKとキャンセルのアラートビューを作成する UIAler…

【Objective-C】UIDatePickerの使い方

日付を設定する myDatePicker.date = [NSDate dateWithString:@"2011-01-01 00:00:00 +09:00"]; 設定した日付を読み取る NSDateFormatter *df = [[[NSDateFormatter alloc] init] autorelease]; df.dateFormat = @"yyyy/MM/dd HH:mm"; myLabel.text = [df st…

【Objective-C】UITextFiledで使いそうなプロパティとイベント

イベント Did End On Exit 編集が終了したとき ※Did End On Exitイベントを使うと、編集が終了した時に キーボードを隠すことができる。 プロパティ Text 文字内容 Placeholder 入力用の薄い説明文 Alignment 文字の配置 Clear Button 入力クリアボタンの有…

【Objective-C】オブジェクトの値を比較する時の注意

演算子==は変数が一致しているかどうかを判定する。 ポインタ変数の場合は、参照先ポインタの値を比較してしまう為、中身が一致していてもNOが返る。オブジェクトの中身で比較する場合は、NSObject.isEqualを用いる。 NSString *a = [NSString stringWithStr…

【Objectice-C】連想配列の使い方

固定長はNSDictionary。 可変長の場合はNSMutableDictionaryを使う。 連想配列を作る NSDictionary *myDict = [NSDictionary dictionaryWithObjectsAndKeys: @"480x320", @"iPhone", @"960x640", @"iPhone4", @"1024x768", @"iPad", nil]; NSDictionary *連…

【Objectice-C】配列の使い方

固定長の配列はNSArray。 可変長にする場合はNSMutableArrayを使う。 配列を作る NSArray *myArray = [NSArray arrayWithObjects: @"A", @"B", @"C", nil]; 配列の個数を取得する NSLog(@"%d", myArray.count); 番号で指定して読み出す [myArray objectAtInd…

bashのコマンド

bashでコマンド実行 ↓ 権限無いと怒られる ↓ 上キー押す ↓ 左キーを押しっぱなしにして先頭に行ってsudoをつけて再実行なんていうことがあったので、カーソルを先頭に持って行けるコマンドが無いか調べてみた。 あるよねえ、当然。http://linux.kororo.jp/co…