Sinatra Errno :: ENOENT - 找不到文件

时间:2017-08-24 19:12:25

标签: ruby sinatra

尝试使用sinatra运行此应用程序时,它会抛出错误,说它无法找到json文件。当我在sinatra之外测试方法时,它们工作正常。 文件database.json与app.rb位于同一文件夹中。当我不执行方法"阅读"时,sinatra运作良好。

这是app.rb

require 'sinatra'
require 'json'

class Articles
attr_reader :read

def read
  JSON.parse(File.read('database.json'))
end

def create
  "Here I am!"
end

def update(title, content)
  added_art = {"title": title, "content": content}
  json = File.read('database.json')
  secondJsonArray = JSON.parse(json)
  secondJsonArray << added_ar
  File.open("database.json","w") do |f|
  f.puts JSON.pretty_generate(secondJsonArray)
  end

end

end


get '/' do
  @all = Articles.new.read
erb :index
end

post '/' do
  @title = params[:title]
  @content = params[:content]
  Articles.new.update(@title, @content)
  redirect 'http://localhost:4567/'
end

我收到的错误消息如下:

No such file or directory @ rb_sysopen - database.json
JSON.parse(File.read('database.json'))

然而,当我从Sublime Text执行单独的app.rb文件时,它确实有效,我可以很好地获取网址。

附加

1 个答案:

答案 0 :(得分:0)

您可能使用错误的路径,因为从不同的上下文启动它尝试使用这样的路径:

def read
  path = File.expand_path(File.dirname(__FILE__) + "/database.json")
  JSON.parse(File.read(path))
end