[GitHub] hub コマンドを使って PullRequest をもっと簡単に
- 2013 3/30
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 で flash に大量の文字列を詰め込むと ActionDispatch::Cookies::CookieOverflow error が発生しました。
Raised when storing more than 4K of session data.
解決方法は、セッションを Cookie ではなく ActiveRecord や Redis などで置き換えることです。
・Ruby on Rails ActionDispatch::Cookies::CookieOverflow error – WILT
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 の設定方法をメモ。
# 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 の 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 みたいな絞り込みをするのと同じ感じ。
Ruby on Rails + RSpec で Time.now をスタブ化するコードをメモ。
time_now = Time.local(2013, 12, 31, 0, 0, 0) Time.stub!(:now).and_return(time_now) |
Eclipse で Android アプリの既存のプロジェクトをインポートした後に、ビルドすると下記のようなエラーが発生しました。
■ エラーメッセージ
ビルド・パスのエラーが解決されるまで、プロジェクトをビルドできません
■ 解決方法
[参考]
ビルド・パスのエラーが解決されるまで、プロジェクトをビルドできません – のねの日記 – human brain programing
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 以下へ移動する。
以上です。