我发现了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
song.rb
位于正确的文件夹中,我也查了一下。 你可以猜到,我对编程很新,如果它是我忽略的基本内容,请提前道歉。 干杯。
答案 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)。