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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

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

Q&A

2回答

2083閲覧

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

kentarosakura

総合スコア9

Ruby

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

0グッド

0クリップ

投稿2015/11/07 12:41

こんにちは、プログラミング初心者です。
以下の様な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>'

気になる質問をクリップする

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

2種類のRubyがあって、使っている方にgemsがインストールされていません。

bash

1# PATH=/usr/local/rvm/rubies/ruby-2.2.1/bin:$PATH 2# gem install anemone nokogiri

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

投稿2015/11/07 14:49

otn

総合スコア84507

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ruby

1require 'anemone' 2...

ruby

1require 'bundler' 2Bundler.require 3require 'anemone' 4...

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

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

投稿2016/11/12 01:29

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問