質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.51%

  • Ruby

    9434questions

    Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

cgiファイルがサーバー上で動きません。

受付中

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 900
こんにちは、プログラミング初心者です。
以下の様なcgiファイルを書きました。
rubyでサーバーを立てた際に、localhostでアクセスするとうまくブラウザに結果が表示されるのですが、さくらVPSのサーバーに上げるとうまく行きません。centos6.7を使っています。
ただ、ターミナルから実行命令を出すとうまくいきます。
アクセス権はすべて777にしてもうまく行きません。
サーバー上にはanemoneもnokogiriもインストール済みです。

which rubyと打つと、
~/.rvm/rubies/ruby-2.0.0-p647/bin/ruby
と表示されます。

やりたいことは、DOI名から論文タイトルなどを持ってくることです。
下にエラーログを載せます。

ずっとこの問題で悩んでいます。
よろしくお願いします。助けてください。


#!/usr/local/rvm/rubies/ruby-2.2.1/bin/ruby --
print "Content-Type: text/html\n\n"

require 'anemone'
require 'nokogiri'
require 'kconv'

urls = []
koko="http://search.crossref.org/?q="+"10.1103/PhysRevB.78.121302"
urls.push(koko)

Anemone.crawl(urls, :depth_limit => 0) do |anemone|
    anemone.on_every_page do |page|

    #文字コードをUTF8に変換したうえで、Nokogiriでパース
    doc = Nokogiri::HTML.parse(page.body.toutf8)

    title = doc.xpath("//*[@class='item-data']/p[1]").text
    date = doc.xpath("//*[@class='item-data']/p[2]/span[1]/b[2]").text
    journal = doc.xpath("//*[@class='item-data']/p[2]/span[2]/b[1]").text
    volume = doc.xpath("//*[@class='item-data']/p[2]/span[3]/b[1]").text
    issue = doc.xpath("//*[@class='item-data']/p[2]/span[4]/b[1]").text
    pagefrom = doc.xpath("//*[@class='item-data']/p[2]/span[5]/b[1]").text
    pageto = doc.xpath("//*[@class='item-data']/p[2]/span[5]/b[2]").text
    authors = doc.xpath("//*[@class='expand']").text

    title= title.strip
    date=date.gsub(" ", "")  
    date=date.gsub(/(\r\n|\r|\n|\f)/,"")

months = /[A-Z]/ =~ date
months = months.to_i
$day = date[0..months-1]
month = date[months, 3]
$year = date[months+3,4]

firstauthorstart = /:/ =~authors
firstauthorend = /,/ =~authors
fisrtauthour = authors[firstauthorstart+2..firstauthorend-1] 

puts month
puts $year
puts title

puts "journal "+journal
puts "volume "+volume
puts "issue "+issue
puts "page first " +pagefrom
puts "page last " +pageto
puts "authors "+authors

end
end

以下、エラーログです。

[Sat Nov 07 21:25:54 2015] [error] [client 121.107.18.132] /usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
[Sat Nov 07 21:25:54 2015] [error] [client 121.107.18.132] : 
[Sat Nov 07 21:25:54 2015] [error] [client 121.107.18.132] cannot load such file -- anemone
[Sat Nov 07 21:25:54 2015] [error] [client 121.107.18.132]  (
[Sat Nov 07 21:25:54 2015] [error] [client 121.107.18.132] LoadError
[Sat Nov 07 21:25:54 2015] [error] [client 121.107.18.132] )
[Sat Nov 07 21:25:54 2015] [error] [client 121.107.18.132] \tfrom /usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
[Sat Nov 07 21:25:54 2015] [error] [client 121.107.18.132] \tfrom /var/www/html/name.cgi:9:in `<main>'
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

+2

2種類のRubyがあって、使っている方にgemsがインストールされていません。
# PATH=/usr/local/rvm/rubies/ruby-2.2.1/bin:$PATH
# gem install anemone nokogiri

rvmやrbenvは、仕組みを理解していないと使えないので、まずは普通に生でRubyをインストールした方が良かったと思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

require 'anemone'
...


require 'bundler'
Bundler.require
require 'anemone'
...


とするとどうでしょうか?

私は CGI ではないのですが、似たような問題に遭遇した時に http://bit.ly/2epUyqf を見つけ、これで解決しました。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

同じタグがついた質問を見る

  • Ruby

    9434questions

    Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。