dポイントプレゼントキャンペーン実施中!

エラー2401.rb:5: syntax error, unexpected '<', expecting end-of-input
<% require 'date' % >の原因がわかりません


2401.rbというプログラムを作成し、実行を致しました。
----------------------------
# coding: utf-8

require'erb'

<% require 'date' % >
<h1>ERB Test Page.</h1>
<p>今日の日付は: <%= Date.today %></p>
----------------------------

ターミナルで実行したのですが、
下記のエラーが発生しました。

2401.rb:5: syntax error, unexpected '<', expecting end-of-input
<% require 'date' % >


何度見なおしても原因がわからなく困っております。
このエラーは何を指しているのかわかりますでしょうか?

宜しくお願いします。

必要な情報は都度教えて頂ければ、追記します。

尚、macで開発しております。
RubyのERBの使用方法を学ぶべく勉強しております。

A 回答 (4件)

こんにちは、



件の書籍の初版のサンプルプログラムをダウンロードしてみましたが

まずex2401ファイルの拡張子はrbでなくてerbですよね。
あと拡張子erbファイルを表示するサーバープログラムがex2405.rbにあります。

DocumentRootディレクトリにex2401.erbを置いた上で、ex2405.rbを実行して、ブラウザで表示させれば良いだけです。
というかその辺の話も書籍に記載されているのではないかと思うのですが……

私の環境(Windows, ruby 2.1.4)で動作確認しましたが、このソースなら#coding行の記述だけ変えればMACでも動作すると思います。
rubyのみで簡単にWebサーバが構築できるのですね、勉強になりました。
    • good
    • 0

> Webrickとの連携方法は記述されており、これとの連携はうまくいきました。


Webrick は Web サーバーを自作するためのものです。一方、今回の質問の話は Web サーバーが表示するページの内容を Ruby で作ろうという話です。
もし誰かが車の操縦を習得するために車の製作方法を勉強したと言っても周りの人は「それ関係ないじゃん」というでしょう。上記はそれと同じような話です。

私は Windows しか使ってないので mac での Web サーバー事情を知らなかったため、何が使えるのか調べてみたところもう Apache が入ってるようです。
となると後はその Apache で Ruby を使えるようにすればいいのですが、……さて、私は Windows しか知らないのでどうすればいいかはわかりません。「その他(OS)」カテゴリでどうすればいいかを聞いてみることをお勧めします。
    • good
    • 0

> このプログラムは「作りながら学ぶruby」という書籍を元に


> 同じソースを入力致しました。
ふむ、その書籍というのは久保秋真氏著の「作りながら学ぶ Ruby入門」でしょうか、以下のサポートページの。
http://rubybook.vacco.net/tabid/1143/language/ja …

だとしたら、目次をみる限り ERB について書いてあるのは「第6部 応用編2 Webアプリケーションにチャレンジしよう」のようですが、それならばご呈示のコードの内容は合点がいきます。
このコードはそれまでのようにターミナルから直接実行するのではなく、Web ブラウザ等から Web サーバーにアクセスして Web サーバーで粗利を実行した結果をブラウザに表示する Web アプリケーションというものです。
このとき Web サーバーはアクセスしてきたリクエストの内容を確認してそれが何らかのプログラムの実行結果を返すものであることを認識し、その Web サーバーが対応するプログラムを起動し、その結果をアクセスをよこした相手に返すものです。

というわけで、前の方には Web サーバーの構築方法が書いてあるようですが、あなたが使っているのは Mac ということでは本に書いてある通りにはいかないかもしれませんでしたでしょう。
というわけで、あなたの環境では Web サーバーはどうなさっていますか。

この回答への補足

webrickとの連携の際に使用したソースです。
参考までに記載致します。
下記でうまく接続は出来ました。

# coding: utf-8
require 'webrick'
config = {
:Port => 8099,
:DocumentRoot => '.',
}

s = WEBrick::HTTPServer.new ( config )

trap(:INT) do
s.shutdown
end

s.start

補足日時:2014/11/24 22:43
    • good
    • 0
この回答へのお礼

再度ご回答有難う御座います。

>「作りながら学ぶ Ruby入門」でしょうか
はい、仰る通りです。


>前の方には Web サーバーの構築方法が書いてあるようですが、あなたが使っているのは Mac ということでは本に書いてある通りには>いかないかもしれませんでしたでしょう。

Webrickとの連携方法は記述されており、これとの連携はうまくいきました。
http://docs.ruby-lang.org/ja/2.0.0/library/webri …

webサーバーはどうなさっていますか?
という回答にwebrickですがあっているのか私の勉強不足のためわかりませんが、他に必要な点は都度記載致します。


ちなみに、今回のプログラムがwebrick及び、webサーバーと連携してという記述はなかったのですが、確かに
ターミナルで直接実行するのではない気がします。

お礼日時:2014/11/24 22:41

……はて、ERB は全く知らなかったんだが、るびまのこの記事のサンプルコードとだいぶ違うような……?


http://magazine.rubyist.net/?0017-BundledLibraries
    • good
    • 0
この回答へのお礼

ご指摘有難う御座います。
このプログラムは「作りながら学ぶruby」という書籍を元に
同じソースを入力致しました。

URL先を拝見し、確かに違うなと思いました。

上記書籍は少し古い書籍(2010年出版)のため、プログラムの仕方が変わったのでしょうか・・・

まずはURLのご共有有難うございました。

お礼日時:2014/11/24 18:13

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!