假设我有一个由nginx提供的Rails 2.3.2应用程序,并由mongrel提供服务,其中我需要通过Rails提供大型静态文件(以控制对它的访问).我希望Rails应用程序将文件传输委托给nginx,以避免阻止mongrel实例.
可用的信息似乎是矛盾和不完整的.这篇文章展示了如何用Apache做到这一点,并暗示它也可以用ngninx完成 - 但没有例子.这篇文章和这篇文章展示了如何使用一个显然Rails 2.3使得不必要的插件来实现它.这篇文章表明可能毕竟不支持带有nginx的x-sendfile.
对于Rails现在可以自行完成的事情,我宁愿不要使用插件.
有没有人使用没有插件和Rails 2.3/nginx/mongrel的x-sendfile式行为?如果没有,那么使用插件(和/或monkeypatch)和Rails 2.3/nginx/mongrel的最佳文档是什么?
我想知道Rails应用程序的最佳部署目录是什么?一些开发人员使用诸如的目录/u/apps/#{appname}.使用而不是或其他操作系统默认目录时是否有任何优势?/u/apps/#{appname}/var/www/#{appname}
显然,我想选择具有最佳安全属性和最小摩擦力的目录来设置服务器环境.
你如何部署你的Rails应用程序?你为什么使用特定的目录?你觉得它真的很重要吗?
我正在开发一个包含上传表单的Sinatra应用程序,其中包含一个进度条,指示已完成上载的内容.如ryan dahl所述,该过程如下:
HTTP上传进度条相当混淆 - 它们通常涉及在服务器上运行的进程,跟踪HTTP服务器正在写入的临时文件的大小,然后在客户端,每隔几秒就向服务器发出一次AJAX调用.上传以询问上传进度.
每个上传都有一个随机的session-id,并跟踪我class variable在我的应用程序中使用的关联(我知道,这太可怕了 - 如果你有更好的想法,请告诉我)
configure do
@@assoc = {}
end
Run Code Online (Sandbox Code Playgroud)
我有一个POST上传的路由,GET一个用于AJAX轮询的路由.内部POST路线我保存的关联session-id,Tempfile以及总规模.
post '/files' do
tmp = params[:file][:tempfile]
# from here on, @@assoc[@sid] should have a value, even in other routes
@@assoc[@sid] = { :file => tmp, :size => env['CONTENT_LENGTH'] }
File.open("#{options.filesdir}/#{filename}", 'w+') do |file|
file << tmp.read
end
end
Run Code Online (Sandbox Code Playgroud)
在GET路线中,我根据Tempfile当前的大小计算百分比:
get '/status/:sid' do
h = …Run Code Online (Sandbox Code Playgroud) 使用Mongrel在Ruby框架上运行Ruby On Rails的最佳教程在哪里?我是服务器管理的新手,所以越详细就越好!
如何成功安装Mongrel for ruby 1.9.3
这是错误:
Building native extensions. This could take a while...
ERROR: Error installing mongrel:
ERROR: Failed to build gem native extension.
/usr/bin/ruby1.9.1 extconf.rb
checking for main() in -lc... yes
creating Makefile
make
compiling http11_parser.c
compiling http11.c
http11.c: In function ‘http_field’:
http11.c:70:3: error: format not a string literal and no format arguments [-Werror=format-security]
http11.c:71:3: error: format not a string literal and no format arguments [-Werror=format-security]
http11.c:77:22: error: ‘struct RString’ has no member named ‘ptr’
http11.c:77:50: error: ‘struct RString’ …Run Code Online (Sandbox Code Playgroud) 在我的本地机器上,我用mongrel运行rails.我有一些在启动时运行的东西,通过config/initializers中的文件,它puts用来告诉我它正在使用哪个数据库,用于发送电子邮件的内容以及其他一些信息.
当我在端口3000,3001和3002上运行一组mongrel时,我只想在端口3000上为mongrel做这个报告.所以,我需要将它包装在一个if块中,该块测试当前运行的mongrel是哪个端口使用.任何人都可以告诉我如何在我的代码中得到这个?
我很抱歉,如果这听起来像一个愚蠢的问题,因为它似乎是那些"没有"的东西之一,但有人可以向我解释为什么Rails需要自己的服务器(Mongrel,WEBrick,mod_rails等)并且可以'只需使用mod_ruby?
我在使用RVM和mongrel_rails方面遇到了麻烦,所以任何帮助都会非常感激.
我可以愉快地使用Ruby gem mongrel使用脚本/服务器启动我的Rails 2.x应用程序.详情:哪个rails/opt/local/bin/rails哪个mongrel_rails/opt/local/bin/mongrel_rails哪个gem/opt/local/bin/gem
但是我刚刚用Ruby 1.8.7添加了RVM并安装了我的所有宝石,包括mongrel但是当我尝试用脚本/服务器启动我的rails应用程序时,我现在得到:没有这样的文件要加载 - mongrel_rails(MissingSourceFile)
运行几个检查我发现:
其中mongrel_rails /Users/daniellewis/.rvm/gems/ruby-1.8.7-p334@nacore/bin/mongrel_rails which rails /Users/daniellewis/.rvm/gems/ruby-1.8.7-p334@nacore/bin/rails哪个宝石/Users/daniellewis/.rvm/rubies/ruby-1.8.7-p334/bin/gem
.profile有:export PATH =/opt/local/bin:/ opt/local/sbin:/ usr/local/mysql/bin:$ PATH [[-s"$ HOME/.rvm/scripts/rvm"]] && ."$ HOME/.rvm /脚本/ RVM"
(我正在使用macports)
有关为什么脚本/服务器无法找到mongrel_rails的任何想法?我只能猜测它与.profile有关,但我不确定是什么.
谢谢!
开始杂种的GEMFILE
gem 'rails', '3.1.0'
gem 'mongrel', '>=1.2.0.pre2'
Run Code Online (Sandbox Code Playgroud)
启动WEBrick的GEMFILE(不是mongrel)
gem 'rails', '3.2.0.rc2'
gem 'mongrel', '>=1.2.0.pre2'
Run Code Online (Sandbox Code Playgroud) 我一直在玩并评估rails的默认WEBrick服务器的其他选项,而Thin是最无痛,最干净的东西,效果非常好!!
你会推荐哪一个Mongrel,Thin,WEBrick和Passenger以及为什么......?是否有任何可扩展性特权(集群友好或配置,可以处理某种规模),这些服务器随附任何这些服务器.或者在评估它们时,可扩展性甚至应该是一个参数?
mongrel ×10
ruby ×5
deployment ×1
file-upload ×1
iframe ×1
linux ×1
nginx ×1
passenger ×1
rvm ×1
scalability ×1
sinatra ×1
thin ×1
windows ×1
x-sendfile ×1