ruby sinatra:" irb要求"问题

时间:2015-08-23 14:04:29

标签: ruby sinatra

我发现了Sinatra,并开始玩它。所有这些都很棒,直到教程要求我在irb中要求一个文件,以便IRB可以使用Song类:

irb> require './song'

我按照教程写了这封信,但是,我一直收到同样的错误信息:

MacBook-Pro-de-doguria:views arnaud$ ls
about.slim  home.slim   not_found.slim  styles.scss
contact.slim    layout.slim song.rb
MacBook-Pro-de-doguria:views arnaud$ irb
irb(main):001:0> require './song'
/Users/arnaud/Google Drive/Code/codebasics/sinatra2/views/song.rb:1: warning: encountered \r in middle of line, treated as a mere space
SyntaxError: /Users/arnaud/Google Drive/Code/codebasics/sinatra2/views/song.rb:1: syntax error, unexpected tIDENTIFIER, expecting end-of-input
DataMapper.s...rations'
                     ^
from /usr/local/Cellar/ruby/2.2.3/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
from /usr/local/Cellar/ruby/2.2.3/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
from (irb):1

我的文件song.rb是从教程中复制粘贴的,可以在下面找到:

require 'dm-core'
require 'dm-migrations'
DataMapper.setup(:default, "sqlite3://#{Dir.pwd}/development.db")
class Song
  include DataMapper::Resource
  property :id, Serial
  property :title, String
  property :lyrics, Text
  property :length, Integer
  property :released_on, Date
end
DataMapper.finalize
  • 我尝试了单引号和双引号。
  • 我检查了Google上每一个可能的答案,堆栈溢出,你说出来。
  • 我的文件song.rb位于正确的文件夹中,我也查了一下。
  • 我删除并重新创建了两次song.rb文件,只是为了确保它没有复制粘贴。
  • 其他文件工作正常,我创建的视图效果很好。

你可以猜到,我对编程很新,如果它是我忽略的基本内容,请提前道歉。 干杯。

1 个答案:

答案 0 :(得分:1)

您的文件编码似乎有问题。

Ruby在song.rb的第1行喊出\r(仔细阅读错误消息 - 看起来第1行看起来不像你想要的第1行),并抱怨流浪song.rb文件中的>>> max(tab, key=lambda k: k.x) Point(x=8, y=3) >>> max(tab, key=lambda k: k.x).x 8

我假设您将代码从某处复制粘贴到某个地方,而这些应用程序并没有表现得很酷。

要么您要了解文件编码和转换的过程,要么在编辑器中找到一个选项以将文件保存为给定的编码,或者将代码重新复制到新文件中并希望它只是作品(TM)。