【问题标题】:ruby sinatra: "irb require" issueruby sinatra:“irb 要求”问题
【发布时间】:2015-08-25 17:29:32
【问题描述】:

我正在发现 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 文件,只是为了确保它不是复制粘贴的。
  • 其他文件工作正常,我创建的视图工作正常。

您可以猜到,我对编程还很陌生,如果我忽略了一些非常基本的东西,请提前道歉。 干杯。

【问题讨论】:

  • 我认为该文件有错误,我们需要查看文件顶部的确切内容
  • require "./song" => true 我无法重现它,所以我最好猜你使用的是 Windows 风格的行尾?哦,我很确定 views 不是您的模型 (song.rb) 的正确文件夹,但这与您的问题无关。
  • 谢谢,如上所述,我真的在学习如何将 ruby​​ 付诸实践,所以基本上我正在按照我的教程所说的(关于 song.rb 文件的位置)。

标签: ruby sinatra


【解决方案1】:

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

Ruby 在 song.rb 的第 1 行喊出 SyntaxError(仔细阅读错误消息 - 它看起来不像第 1 行是你想要的第 1 行),并抱怨一个流浪的 @987654322 @ 在你的 song.rb 文件中。

我假设您将代码从某处复制粘贴到某处,而这些某处的应用程序表现不佳。

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

【讨论】:

  • 实际上,将上面问题中的代码复制回编辑器应该可以解决问题!
【解决方案2】:

感谢大家的帮助和建议,非常感谢。 问题现在已经排序,因为我只是使用了另一个文件名(即,songs.rb 而不是 song.rb),这很有效。如上所述,我的第一次尝试是复制粘贴,但随后我将原始代码写入了一个新文件。仍然不知道发生了什么,但我猜这就是人们学习的方式......

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-06
    • 1970-01-01
    • 2015-07-18
    • 2011-01-08
    • 1970-01-01
    • 2010-12-28
    • 1970-01-01
    相关资源
    最近更新 更多