2017-08-24 2 views
0

Beim Versuch, diese App mit sinatra auszuführen, wird ein Fehler ausgegeben, der besagt, dass keine JSON-Datei gefunden werden kann. Wenn ich die Methoden außerhalb von Sinatra teste, funktionieren sie gut. Die Datei database.json befindet sich im selben Ordner wie app.rb. Wenn ich die Methode "read" nicht ausführe, funktioniert sinatra gut.Sinatra Errno :: ENOENT - Datei kann nicht gefunden werden

Dies ist 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 

Die Fehlermeldung, die ich erhalten, ist die folgende:

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

Allerdings, wenn ich die einzelnen app.rb Datei von Sublime Text ausführen, es funktioniert und ich kann die URL ganz gut bekommen.

Extra-

+0

Sind Sie sich bewusst, dass Sie nur 'Umleitung verwenden können‚/ "Das funktioniert dann auch für verschiedene Hosts und Ports –

Antwort

0

Sie sind wahrscheinlich einen falschen Pfad, da Sie es aus einem anderen Kontext zu starten versuchen, einen Pfad so zu verwenden:

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