我在我的erb文件中发布图像之前使用以下代码检查文件是否存在.这是一个ruby/sinatra应用程序 - 而不是rails.
<% @imagename = @place.name + ".jpg" %>
<% if FileTest.exist?( "/Users/Tim/projects/game/public/" + @imagename ) %>
<p><img src= '<%= @imagename %>' width="400" height="300" /> </p>
<% end %>
Run Code Online (Sandbox Code Playgroud)
当我将它发布到Heroku时,它显然是行不通的.
我尝试使用相对路径,但我无法让它工作:
<% if FileTest.exist?( "/" + @imagename ) %>
Run Code Online (Sandbox Code Playgroud) 任何人都可以提供在Rubymine中运行和调试sinatra应用程序的设置说明吗?
Sinatra/Rack世界中是否存在类似于Rails配置加载方案的任何内容,该方案根据需要加载其中一个config\enviroments\*.rb文件Rails.env
我知道我可以很容易地开发一个,我只是想知道是否已经存在某些东西.
我正在努力实现一个RESTful API,它应该返回JSON响应并且应该承受非常高的负载.最高负载将由API的"读取"部分生成,并且API的"写入"部分将产生非常小的负载.我的第一次尝试是使用nodejs编写整个API.我几乎做到了,但是在javascript和ruby之间面临着非常高的模型和逻辑重复,因为API是更大系统的一部分.我尝试将所有逻辑移动到后端(mySql),但这个想法变得更加丑陋.我的第二次尝试是在Ruby生态系统中编写API,以便在系统的所有部分之间共享模型/逻辑和测试.
我尝试单独使用Cramp和Goliath,但所有异步的东西都非常复杂的API实现.我只需要有2个读取URL异步,因为它们产生最高的负载,并且通过异步,我被迫以异步方式实现其余的API,这没有添加任何值.
我目前的尝试是混合:使用Thin/Sinatra/Cramp鸡尾酒.我正在Ruby代码中实例化瘦机架手柄并使用机架构建器我在正在实现同步实现的Sinatra和以异步方式实现2个URL的Cramp之间拆分API.
这是一个好方法吗?或者在一个Web服务器(Thin)中使用Sinatra和Cramp会因为某种原因让我更麻烦吗?
更新: 我正在尝试使用带有rack/fiber_pool和em_mysql2的唯一Sinatra解决方案.似乎我杀了两个目标 - 通过同步实现制作API异步.但我遇到了一个我认为很快就会修复的错误.
这样会有任何陷阱吗?
我可以导航到成功重定向到facebook的主网址.我授予权限,我被重定向回回调网址.如果这个url只是返回类似'hello'的东西,那么它可以正常工作,没有错误.但是调用token = client.auth_code.get_token(@data[:code], :redirect_uri => redirect_uri)会导致错误.
我按照Heroku和Zerigo的文档为MYAPP.heroku.com设置了自定义域名.当我导航到myapp.heroku.com时,一切正常.但是当我导航到myapp.com或www.myapp.com时,我收到错误"Heroku | No such app"
host myapp.heroku.com
myapp.heroku.com is an alias for proxy.heroku.com.
[.....]
Run Code Online (Sandbox Code Playgroud)
看起来不错,而且
host www.myapp.com
www.myapp.com is an alias for proxy.heroku.com.
[.....]
Run Code Online (Sandbox Code Playgroud)
看起来也不错.但我仍然得到"Heroku |没有这样的应用程序".
在这一点上完全不知所措
我无法让AFNetworking与Web服务成功通信.有没有办法注销(或以其他方式查看)它发送的确切http请求?
我有这个卷毛电话:
curl -v -H "Accept: application/json" -H "Content-type: application/json" -X POST -d '{"name":"abc", "orgid":"12", "subject":"my subject"}' http://localhost:3000/mysinatraapp
post '/mysinatraapp' do
unless request.preferred_type.eql? 'text/html'
# This is not really params hash. It will be a string like "{\"name\"=>\"abc\", \"orgid\"=>\"12\", \"subject\"=>\"my subject\"}"
params = request.env["rack.input"].read
...
...
halt 400 if params.length == 0
end
# This does not work
p "hi #{params['name']}"
end
Run Code Online (Sandbox Code Playgroud)
p "hi #{params['name']}"失败,因为它不是哈希.我如何使其工作?
我的目标是将发布的json作为params哈希.这样我就可以params照常使用了.
我是Ruby世界的新手.我使用Sinatra创建了我的第一个应用程序,我在生产服务器上遇到了一些麻烦.
当我unicorn -c randmovie_unicorn.rb在我的本地机器上运行时,它运行正常.但在生产中,我收到此错误:
<module:Templates>': uninitialized constant Tilt::CompileSite (NameError)
Run Code Online (Sandbox Code Playgroud)
在我的randmovie_unicorn.rb档案中:
preload_app true
working_directory "./"
listen 8006
worker_processes 2
timeout 30
Run Code Online (Sandbox Code Playgroud)
我没有使用HAML或任何类似的东西.
有人可以帮我吗?谢谢!
我正在尝试在sinatra中编写一个简单的问答游戏,我需要为所有用户提供可访问的公共对象(大厅状态,聊天消息等).问题是Sinatra在每个请求和对象变为初始状态后重新加载代码.怎么实现呢?