尝试使用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文件时,它确实有效,我可以很好地获取网址。
附加
答案 0 :(得分:0)
您可能使用错误的路径,因为从不同的上下文启动它尝试使用这样的路径:
def read
path = File.expand_path(File.dirname(__FILE__) + "/database.json")
JSON.parse(File.read(path))
end