カテゴリー : Ruby on Rails

[Ruby on Rails]楽天WEBサービスの503エラーについて

 先日から楽天WEBサービスから利用している楽天APIで商品検索を実行すると以下のようなエラーが発生する問題が起きています。 503 Service Unavailable  このエラー自体はよく見かけるエラーですが、少し前から頻発してました。この件についての公式リリースはこちらです。 RWS開発日記 — 503エラーに関するお問合せについて - 楽天ウェブサービスの開発・運用チームのブログ -  こちらのリリースを読むと、どうやら1秒間に1リクエスト以上実行すると503エラーとなり、しばらくは利用できなくなる…ということらしいです。まぁその仕様変更自体はしかたがないので、リクエスト実行前に1秒停止するロジックを追加し、1秒に1回以下に絞ってみました。 options_query_encoded = URI.encode(options_query) # URI.encodeでは'=+'が変換されないので、手動で置換する options_query_encoded = options_query_encoded.gsub(/=\+/,'=%2B') search_request_url = "#{@request_url}?#{@developer_id_query}#{@affiliate_id_query}#{options_query_encoded} &operation=ItemSearch&version=2009-04-15".gsub!("\n","").gsub!(" ","") @search_request = search_request_url #2009/11/13 リクエストの回数制限対応 sleep 1 xml_result = open(@search_request)  しかしやっぱり503エラーになってしまいます。しょうがないので解決するまで一時的に楽天APIの使用を停止することにしました。…まったく勘弁してください。 - [ 続きを読む ]

[Ruby on Rails] amazon-ecs が Amazon Product Advertising API の署名認証に対応していること (2)

前回の記事 でめ備忘録 » [Ruby on Rails] amazon-ecs が Amazon Product Advertising API の署名認証に対応していること “amazon-ecs”が署名認証対応していることについての訂正  先日、投稿した記事では rubygem の”amazon-ecs”が署名認証に対応しているということを書きました。確かに対応はしています。しかし、私の使用していたバージョン(0.5.3)では対応されていませんでした! 対応されているバージョンは“0.5.5″以降です。お詫びして訂正させていただきます。 “amazon-ecs”のバージョンアップ  さてさくっと謝罪したところで(反省なし)、さっそく”amazon-ecs”のバージョンアップと入りましょう。 CORESERVER ではリモートでのgemのインストールが止められてしまいます。 参考:でめ備忘録 » [Server] [Ruby on Rails] さくらインターネットからCORESERVERへRailsアプリを移動する (2)  ですので、今回もダウンロードしてローカルからインストールします。いろいろ調べたところ、バージョンアップと共にインストールしなければいけないものがいくつかありましたので、それらも一緒に記述しておきます。 wget http://rubyforge.org/frs/download.php/60727/rubyforge-1.0.4.gem wget http://rubyforge.org/frs/download.php/56871/rake-0.8.7.gem wget http://rubyforge.org/frs/download.php/61757/hoe-2.3.3.gem wget http://files.rubyforge.vm.bytemark.co.uk/ruby-hmac/ruby-hmac-0.3.2.gem wget http://rubyforge.org/frs/download.php/60602/amazon-ecs-0.5.6.gem gem install --local rubyforge gem install --local rake gem install --local hoe gem install --local ruby-hmac gem install --local amazon-ecs  とりあえずこれで正常に動作するようになりました。ただ、以前より格段に重くなったような。。。仕方ないといえば仕方ないですが。。。 - [ 続きを読む ]

[Ruby on Rails] amazon-ecs が Amazon Product Advertising API の署名認証に対応していること

この記事には続きがあります。 でめ備忘録 » [Ruby on Rails] amazon-ecs が Amazon Product Advertising API の署名認証に対応していること (2) Amazon ECS で 400 Bad Request Error 2009年8月4日。Amazon ECS を使用した Rails の蔵書管理システムを実行したところ、以下のような表示になりました。 Amazon::RequestError HTTP Response: 400 Bad Request これを見て、そーいえばなんか Amazon からメールが来てせっつかれていたなぁ~と思い出しました。でも英語のメールとか読む気が起きなかったので、他人任せにしようとネットを検索して、以下のサイトを参照させていただきました。 Amazon Product Advertising API (認証対応) | Diaspar Journal ソースとかを読むと、要するに REST でデータを取得してくる際に”Secret Key”を追加しろ、ということらしい。 理屈はわかりましたが、私は gem のツール”amazon-ecs”をそのまま使用しているので、こちらのソースを修正しなければいけないということになります。…めんどい。 で、誰かやってないかなぁ~とネットを調査したところ、こちらのサイトを発見しました。 amazon-ecsに署名認証をつけるようにした - おもしろWEBサービス開発日記 こちらの方が”amazon-ecs”を修正してくださっているそうです。おおすばらしい! ぜひともパクらせていただきましょう!! …ん? github? 最近、 Rails 市場に触れていなかったので、よくわかりませんでしたが、どうやらパッチとかを公開しておける場所らしい。ここから Download してインストールするのかぁ…なんか嫌な予感が。。。 Killed 案の定、CORESERVER では github からインストールしようとすると削除されてしまいました。 参考: でめ備忘録 » [Server] - [ 続きを読む ]

[Server] [Ruby on Rails] さくらインターネットからCORESERVERへRailsアプリを移動する (3)

実際にRailsアプリを移植する  ようやく Ruby on Rails アプリの移行が完了しましたので、備忘録を残していきます。 さくらインターネットとCORESERVERの違い MySQL 4.0.27 ⇒ 5.1.2.2rc MySQLがUTF8対応 MySQLデータベースを複数持てる FastCGI対応  これが意外とエラーを起こしました。  まず、当然として"environment.rb"の"GEM_HOME"を前回設定した"GEM_HOME"に直します。 $LOAD_PATH.push("/home/xxx/lib/ruby/site_ruby/1.8") $LOAD_PATH.push("/home/xxx/lib/ruby") ENV['GEM_HOME'] ||= '/home/xxx/lib/ruby/gem' ↓ $LOAD_PATH.push("/virtual/xxx/lib/ruby/site_ruby/1.8") $LOAD_PATH.push("/virtual/xxx/lib/ruby") ENV['GEM_HOME'] ||= '/virtual/xxx/lib/ruby/gem'  続いてデータベースをUNICODEで作成する。 UTF8で統一(XREA + MySQL + Ruby) | Diaspar Journal  更に"database.yml"の設定を作成したデータベースにあわせる。その際に"encoding: utf8"を指定しておく。  そしてそのままソースをUP。"rake db:migrate"でDBを作成し、実行してみるが、「Script Not Found」というエラーが。。。更になにもいじらずに更新してみると、「Application Error」に。。。 一から作り直す  挙動が明らかにおかしいので、一から作り直してみることに。railsコマンドでプロジェクトを作成し、"environment.rb"、"database.yml"と、appフォルダ、dbフォルダ、publicフォルダ下の3つフォルダを上書き。  実行してみると。。。動いた!!  FastCGIのおかげか、挙動が物凄く早い!! まったくロード感がないし、Amazon A2S(ECS)を実行してみても、まったく待ち時間がない!! Ajax系の入力補助(マスタを用いたオートコンプリート機能を実装してます)も早くて快適でした!!  結論、Ruby on Railsを実行するには、さくらインターネットよりCORESERVERの方がいいです。早々にMTごとCORESERVERに移りたいと思います。 ※ ちなみに MySQL 5.1 になると結構予約語が増えていて、私は二個ほどフィールド名とかぶってエラーになりました。CORESERVER上のMySQLの予約語はこちらからご確認ください。 MySQL :: MySQL 5.1 リファレンスマニュアル :: 8.3 MySQLでの予約語の扱い - [ 続きを読む ]

[Server] [Ruby on Rails] さくらインターネットからCORESERVERへRailsアプリを移動する (2)

CORESERVER に Ruby on Rails をローカルからインストールする  前回の記事に引き続き、CORESERVERにRuby on Railsをインストールしてみました。予想外にてこずりましたので、ここに備忘録を残しておきたいと思います。 .bashrcの作成エラー  基本的にはこちらのサイトを参考にインストールを実行していきました。 CORESERVERにRuby on Railsをインストールする | stick stack  途中、”.bashrc”ファイルの作成でこんなミスをしてしまい、エラーになりました。 export PATH=$PATH:$HOME/bin export RUBYLIB=$HOME/lib/ruby/site_ruby/1.8:$HOME/lib/ruby export GEM_HOME=$HOME/lib/ruby/gem ←最後に改行が入っている ↓ ~/lib/ruby/gem? ←最後の改行が変換できず、妙なフォルダが出来上がってしまった。  こんなのは当然の知識かもしれませんが^^; Ruby on Railsのインストールエラー  こちらも解決して、gemコマンドが実行できるようになったので、引き続き作業を実行していくと、Ruby on Railsのインストール中に以下のようなエラーが発生しました。 xxx@s99:~> gem install rails -v 2.0.2 --include-dependencies Successfully installed rails-2.0.2 Successfully installed rake-0.8.3 Successfully installed activesupport-2.0.2 Successfully installed activerecord-2.0.2 Successfully installed actionpack-2.0.2 Successfully installed actionmailer-2.0.2 Successfully installed activeresource-2.0.2 Installing ri documentation for rake-0.8.3... Installing ri documentation for activesupport-2.0.2... Installing ri documentation for activerecord-2.0.2... Killed xxx@s99:~>  Killedなんて不穏当な文字列が出てきました。インストールが出来たか確認する為に、railsコマンドを実行してみますが、以下のようなエラーが発生してしまいます。 xxx@s99:~> rails - [ 続きを読む ]

[Server] [Ruby on Rails] さくらインターネットからCORESERVERへRailsアプリを移動する (1)

CORESERVER移管計画 さくらインターネットの問題点 : MySQLのUTF-8対応  さくらインターネットのMySQLはバージョン"4.0.27"というかなり古いバージョンで、UTF-8に対応していません。"Ruby on Rails"を扱う場合は文字コードはUTF-8が基本となっていますが、MySQL内でデータが文字化け状態になることさえ許容できれば、まったく問題なく運用できます。  しかし、今回、私は不満を持ってしまいました。理由はバックアップ・レストアができない点です。現在、さくらインターネットでRailsを用いたwebアプリを開発していますが、開発の過程でDB設計の見直し等が発生した場合、マスタデータの出し入れなどが必要となってきました。その際、文字化けして保存してあるデータをMySQLのエクスポート機能で出力しようとすると、エラーが発生しました。せめてインポートさえできるのでしたら、取込データを用意しておくのですが、UTF-8での取込は不可能なので、どうやってもEUC等で保存され、Railsで呼び出すとエラーになってしまいます。 2008年11月13日追記  MySQL 4.0.* ではSQLのサブクエリができないことが発覚。決定的に断念 MySQL :: MySQL 4.1 リファレンスマニュアル :: 6.4.2 サブクエリ構文 事実、初期の SQL が “構造化問い合わせ言語” と呼ばれるようになったきっかけは、 サブクエリにある。  そもそも、FastCGIが利用できないさくらインターネットではデータの1件保存だけでも数秒かかります。さくらインターネットでRailsアプリを動かすことに限界を感じていたことですし、そろそろ違うサーバーを検討してみることにしました。 CORESERVER  新しいサーバーを探していると、10年以上前に一時期お世話になったことがある「XREA.COM」の新サービス「CORESERVER.JP」を発見しました。  FastCGIも使えて容量も申し分なく、値段は月額1,000円と非常にお買い得でした。とりあえず15日の試用を試してみることに。 ドメイン  「CORESERVER」の登録には「VALUE DOMAIN」への登録が必要なようです。「VALUE DOMAIN」はドメインを購入できるサイトです。  「WebEyes」から「さくらインターネット」へ、更に「CORESERVER」へと、最近、よくサーバーを移転するのでドメインがあれば便利だな~と考え、ついでに購入を検討してみることに。  料金的には、gTLDドメインは主に年額990円と安いので、購入を決定。ドメイン名称の案としては、短く「deme.xxx」がいいと思いましたが、かつての個人名ドメイン「.name」しか空いていなかったので、「demenaoto.xxx」にすることに。  「demenaoto.xxx」はどこも空いていましたので、どれを購入するか検討。最近は企業専用という色合いも薄れてきたメジャーな「.com」と、ネットワークという微妙な分類でわりと個人に親しまれている「.net」で迷い、「demenaoto.net」を購入。「.name」や「.com」をあまりよろしくないと思ってしまう辺り、どうやら私は昔の感覚が抜け切らない、古い考え方を持っているみたいですね。 2008/11/13追記  VALUE DOMAIN のドメインをさくらインターネットで使用する方法。移行が完了し次第、CORESERVERに設定し直すつもりなので、二度と参照しないかとは思いますが、念の為、備忘録。 ValueDomainのドメインをさくらのレンタルサーバで使う :アドサイト・プロについて CORESERVER SSH接続  CORESERVERの契約はあっさり終わりました。調査しているときからわかっていたことですが、「CORESERVER」への遠隔地からのアクセスは「Telnet」ではなく「SSH接続」でした。開始方法はこちらを参考に。 CORESERVERにSSHでアクセスする | stick stack  ちなみに私は仕事場ではWin2k、自宅ではWinXPとVistaなので、当然SSHなんてものは入っていません。WindowsでSSH接続をする方法を調査すると、このようなサイトが見つかりました。 WindowsでのSSH利用方法  「UTF-8対応 TeraTerm Pro」などというソフトは聞いたことはありませんでしたが、Vectorで見てみるとランキング一位になっていました。とりあえず問題なさそうだと考え、インストール。「CORESERVER」での使い方についてはこちら。 XREA/CORESERVERとのSSH接続  無事、登録できました。  次回はこちらを参考に「Ruby on Rails」環境を構築する予定。 CORESERVERにRuby on Railsをインストールする | stick stack - [ 続きを読む ]

[Ruby on Rails] さくらインターネットで Amazon ECS インストール時にエラー

 自作プログラムのWeb化に辺り、とりあえず情報管理システムのWeb化を検討しています。情報管理なんてご大層な名前ですが、言ってみれば蔵書管理システムの機能拡張版です。  ローカル版のこれには”Amazon Web サービス“を使用して商品管理を行っていますので、当然Webでもこれを行いたいと思います。  とりあえず”Amazon Web サービス”の利用方法を調査しようと、さくらインターネットのRails環境に、”Amazon ECS”をインストールしようとしました。 ひげろぐ: RailsでAmazon Webサービス  しかし、以下の実行中にエラーが発生しました。。。 gem install amazon-ecs ~~(略)~~ install: /home/mostlyfine/lib/ruby/gem/gems/hpricot-0.6/lib/i686-linux/hpricot_scan.so: chown/chgrp: Operation not permitted *** Error code 71  どうやらHTMLの読込やら削除やらを行う”hpricot”という機能を追加しようとして、そのインストール時にエラーが起こったようです。これを調査するとこちらのサイトへ行き着きました。 Ruby Study Go: さくらインターネットでrubygemsのインストールでコケる場合の対処  ただこの通り実行してみても上手くいかない…。よくよく見てみると、setenvで定義する環境変数名がおかしかった。正しくはこう対処します。 setenv RB_USER_INSTALL true  こんなの絶対一人じゃ対処できませんでしたよ^^; Webを介した自動互助関係というのは本当にありがたいですねぇ - [ 続きを読む ]