カテゴリー : 2013年 3月

[GitHub] hub コマンドを使って PullRequest をもっと簡単に

GitHub で PullRequest を送る場合に、ブラウザからも出来ますが、 hub コマンドを使えばもっとカンタンにできます。

defunkt/hub · GitHub はてなブックマーク - defunkt/hub · GitHub

まず、hub をインストールします。

brew install hub

使い方は、下記のような感じ。

hub pull-request
hub pull-request -h myrepo:currentbranch

いちいちブラウザ開いて、プルリクエスト送らないで良いのはかなり便利です。

[参考]

GitHubユーザーのためのhubコマンド #git #AdventCalendar – Qiita はてなブックマーク - GitHubユーザーのためのhubコマンド #git #AdventCalendar - Qiita

hub コマンドで github から fork して pull request をさくっと – #生存戦略 、それは – subtech はてなブックマーク - hub コマンドで github から fork して pull request をさくっと - #生存戦略 、それは - subtech

[Ruby on Rails] PDFKit が NoMethodError (undefined method `chomp’ for nil:NilClass): というエラーで動かない

Ruby on Rails で PDFKit を使ってまして、CentOS で動かないという状況に陥りました。

NoMethodError (undefined method `chomp' for nil:NilClass):
  pdfkit (0.5.3) lib/pdfkit/configuration.rb:20:in `wkhtmltopdf'
  pdfkit (0.5.3) lib/pdfkit/pdfkit.rb:31:in `initialize'
  pdfkit (0.5.3) lib/pdfkit/middleware.rb:21:in `new'
  pdfkit (0.5.3) lib/pdfkit/middleware.rb:21:in `call'
  warden (1.2.1) lib/warden/manager.rb:35:in `block in call'
  warden (1.2.1) lib/warden/manager.rb:34:in `catch'
  warden (1.2.1) lib/warden/manager.rb:34:in `call'
  actionpack (3.2.13) lib/action_dispatch/middleware/best_standards_support.rb:17:in `call'

下記を参考に直してみても、RuntimeError pdfkit (0.5.3) lib/pdfkit/pdfkit.rb:73:in `to_pdf’ というエラーが出る。

NoMethodError · Issue #82 · pdfkit/pdfkit

原因は2つあって、1つ目はApacheにBasic認証を設定していたこと。

2つ目は /usr/local/bin へ path を通すことで解決しました。

path を通す方法は下記のとおりです。

まず、 /usr/local/bin/ruby_wrapper に下記の内容を記載して保存します。

#!/bin/sh
export PATH="$PATH:/usr/local/bin" 
exec "/usr/local/bin/ruby" "$@"

次に、Apache の httpd.conf で Passenger で使う Ruby の Path を ruby_wrapper に変更します。

PassengerRuby /usr/local/bin/ruby_wrapper

以上です。

[Ruby on Rails] ActionDispatch::Cookies::CookieOverflow error

Ruby on Rails で flash に大量の文字列を詰め込むと ActionDispatch::Cookies::CookieOverflow error が発生しました。

Raised when storing more than 4K of session data.

ActionDispatch::Cookies::CookieOverflow

解決方法は、セッションを Cookie ではなく ActiveRecord や Redis などで置き換えることです。

Ruby on Rails ActionDispatch::Cookies::CookieOverflow error – WILT

[Linux] ImageMagick をソースファイルからインストールする手順

CentOS 6 に ImageMagick をソースファイルからインストールする手順をメモ。

ImageMagick を yum でサクッとインストールしたい場合は、こちらを参考にして下さい。

[CentOS] ImageMagick を yum でインストール | CodeNote.net

cd /usr/local/src/
wget http://www.imagemagick.org/download/ImageMagick.tar.gz
tar xvfz ImageMagick.tar.gz
 
cd ImageMagick-6.8.4-1/
./configure
make
make install

ImageMagick のインストール手順は公式サイトを参考にしました。

ImageMagick: Install from Source

ImageMagick のソースファイルは下記からダウンロードします。

ImageMagick: Index of /download

[参考]

CentOSに最新版ImageMagickをインストールする #CentOS #ImageMagick – Qiita

CentOS に ImageMagick, RMagick のインストール | akkunchoi@github

[CentOS] ImageMagick を yum でインストール

CentOS 6.3 に ImageMagick を yum でインストールしました。

yum -y install libjpeg-devel libpng-devel
yum -y install ImageMagick ImageMagick-devel

identify と convert のバージョンとPathを確認して、インストールされたことを確認します。

# identify -version
Version: ImageMagick 6.5.4-7 2012-05-07 Q16 OpenMP http://www.imagemagick.org
Copyright: Copyright (C) 1999-2009 ImageMagick Studio LLC
 
# which identify
/usr/bin/identify
# convert -version
Version: ImageMagick 6.5.4-7 2012-05-07 Q16 OpenMP http://www.imagemagick.org
Copyright: Copyright (C) 1999-2009 ImageMagick Studio LLC
 
# which convert
/usr/bin/convert

CentOS 5 系とかだとソースファイルからインストールする方が良いみたいです。

[Apache] 実行ユーザーの umask の設定方法

Apache 実行ユーザーの umask の設定方法をメモ。

# find / -name envvars
/usr/local/apache2/bin/envvars
# vim /usr/local/apache2/bin/envvars
 
# umask 002 to create files with 0664 and folders with 0775
umask 002
# service httpd restart

例えば、Capistrano での自動デプロイ運用で、この設定が役に立つ。

Capistrano で自動デプロイするときに、色んなユーザから deploy できるようにしたい場合にぶつかるファイルのパーミッション問題を umask の設定で解決できる。

Apache とデプロイ権限のあるユーザを共通グループ(deploy とか)に所属させて、運用させたいWebアプリのファイルのグループ所有にする。

そして、パーミッションもファイルは 664、ディレクトリは 775 にすれば、cap deploy:cleanup とかでファイルを削除するタイミングでもエラーが出ることはなくなるはず。

[参考]:/etc/sysconfig/httpd

[Ruby] sunspot で関連テーブルの複数カラムで絞り込み

Ruby の Solr を扱うラッパーライブラリ sunspot で、ちょっと複雑な絞り込みの条件を作ったのでメモ。

# Sunspot/Search
searchable do
  # 表示設定ON ( visibility.visible == true ) かつ、
  # 指定された権限(role_id) で絞り込む
  integer :role_ids_with_visible, multiple: true do
    visibilities.select { |visibility| visibility.visible == true }
      .map { |visibility| visibility.role_id }
  end
end

SQL だと 関連テーブルを join して、where visible = true and role_id = xxx みたいな絞り込みをするのと同じ感じ。

[RSpec] Time.now をスタブ化

Ruby on Rails + RSpec で Time.now をスタブ化するコードをメモ。

time_now = Time.local(2013, 12, 31, 0, 0, 0)
Time.stub!(:now).and_return(time_now)

[Android][Eclipse] ビルド・パスのエラーが解決されるまで、プロジェクトをビルドできません

Eclipse で Android アプリの既存のプロジェクトをインポートした後に、ビルドすると下記のようなエラーが発生しました。

■ エラーメッセージ

ビルド・パスのエラーが解決されるまで、プロジェクトをビルドできません

■ 解決方法

  1. 「プロジェクトのプロパティ -> Javaのビルドパス -> 順序およびエクスポートのタブ」を開く
  2. Android x.x にチェックを入れて「OK」をクリックする
  3. ビルド

[参考]

ビルド・パスのエラーが解決されるまで、プロジェクトをビルドできません – のねの日記 – human brain programing

[Mac] Eclipse を使った Android アプリの開発環境の構築方法

Macで、Eclipse を使った Androidアプリの開発環境を構築する方法を調べたのでメモ。

Eclipseのインストール

まず、Eclipseをインストールします。

[Mac] Mountain Lion に Eclipse Juno (4.2) をインストール + 日本語化 | CodeNote.net

Android SDK のインストール

次に、Android SDK をインストールします。

下記のサイトを参考にしました。ここを読むだけでほとんどOKです。

初心者必見!MacでAndroidアプリの開発環境を整えよう【SDKインストール】 | GanoWeb

MAC OSX Lion(10.7.4)でEclipse4.2を使ったAndroid開発環境構築 〜その・1〜 | イーライセンスシステムズ技術ラボ | イーライセンスシステムズ技術ラボ

Android SDK のディレクトリの設置場所は次のようにしました。

DL してきた zip ファイルを展開した adt-bundle-mac-x86_64-20130219 ディレクトリ以下に eclipse と sdk というディレクトリが存在するので、sdk を android-sdk へリネームして、/Applications 以下へ移動する。

以上です。