Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby Heroku上的数据映射器问题_Ruby_Heroku_Sinatra_Datamapper - Fatal编程技术网

Ruby Heroku上的数据映射器问题

Ruby Heroku上的数据映射器问题,ruby,heroku,sinatra,datamapper,Ruby,Heroku,Sinatra,Datamapper,我正在尝试将一个简单的应用程序部署到Heroku(Sinatra并使用DataMapper for the ORM),每当我尝试提交表单时,都会遇到以下错误: 2011-08-03T22:52:05+00:00 heroku[router]: GET pure-mist-880.heroku.com/public/css/raffler.css dyno=web.1 queue=0 wait=0ms service=4ms status=404 bytes=18 2011-08-03T22:52

我正在尝试将一个简单的应用程序部署到Heroku(Sinatra并使用DataMapper for the ORM),每当我尝试提交表单时,都会遇到以下错误:

2011-08-03T22:52:05+00:00 heroku[router]: GET pure-mist-880.heroku.com/public/css/raffler.css dyno=web.1 queue=0 wait=0ms service=4ms status=404 bytes=18
2011-08-03T22:52:06+00:00 heroku[nginx]: GET /public/css/raffler.css HTTP/1.1 | 12.185.40.153 | 340 | http | 404
2011-08-03T22:52:15+00:00 app[web.1]: DataObjects::SyntaxError - ser=jjimxarsyb&password=2QbwU-iBQ6IckNTQqQ05&host=ec2-107-20-254-131.compute-1.amazonaws.com&port=&path=/jjimxarsyb&query=&fragment=&adapter=postgres:
2011-08-03T22:52:15+00:00 app[web.1]:  /app/.gems/gems/dm-do-adapter-1.1.0/lib/dm-do-adapter/adapter.rb:114:in `execute_non_

...
2011-08-03T22:52:16+00:00 heroku[nginx]: POST / HTTP/1.1 | 12.185.40.153 | 297 | http | 500
我当前使用的设置行是(取自Heroku DevCenter):

编辑:

我在.gems文件中添加了dm do适配器,解决了这个问题。现在,当我提交表单时,浏览器中仍显示“内部服务器错误”,我的日志仅显示:

2011-08-04T01:19:30+00:00 heroku[router]: GET pure-mist-880.heroku.com/ dyno=web.1 queue=0 wait=0ms service=54ms status=200 bytes=919
2011-08-04T01:19:30+00:00 heroku[nginx]: GET / HTTP/1.1 | 71.199.2.204 | 1218 | http | 200
2011-08-04T01:19:31+00:00 heroku[router]: GET pure-mist-880.heroku.com/public/css/raffler.css dyno=web.1 queue=0 wait=0ms service=2ms status=404 bytes=18
2011-08-04T01:19:36+00:00 heroku[router]: POST pure-mist-880.heroku.com/ dyno=web.1 queue=0 wait=0ms service=35ms status=500 bytes=30
我不知道为什么我的.css文件没有加载,以及为什么在提交表单时失败

如果您需要更多的代码片段,请告诉我。提前感谢您的任何想法

“公共”不应出现在任何地方的路线中

从sintra.rb:

请注意,URL中不包括公用目录名。文件
/public/css/style.css
作为
example.com/css/style.css
提供

如果您将静态资产放置在其他位置,您也可以自己定义它:

set :public, File.dirname(__FILE__) + '/static'
关于最后一行,是否有根目录的
post
路由?比如:

post '/' do
  #form processing using params[:input_name]
end

此应用程序是否在本地开发环境中工作?

我不确定,但是
pure-mist-880.heroku.com/public/css/raffler.css
中的
public
应该不在那里,因为文件夹映射到
/
iirc。也许你在什么地方走错了路?也许在您的模板中?实际上,set:public行正是让事情正常运行所需要的。我刚把“/static”改为“/public”,一切都正常工作了。我在生产中的一台本地机器上运行(使用Thin)来测试将它上传到Heroku时的样子。谢谢你的回答;它提醒我,在过去的几天里,我没有更新我的发现在经典的sinatra应用程序中(没有sinatra::Base子类化),它假定“public”是静态资产文件夹。编写现代Sinatra应用程序时,必须使用该
set:public
行指定静态资产存在于类中的位置:干杯
post '/' do
  #form processing using params[:input_name]
end