我一直在尝试在我的应用程序中使用基本的异步HTTP调用.
我尝试在我的应用程序中使用Rails 3异步堆栈演示中的一些代码:http://github.com/igrigorik/async-rails,但我得到"不能从根光纤中产生"而且我没有想从哪里开始.这是我追踪的最高点:
(eval):10:in `yield'
(eval):10:in `get'
app/controllers/home_controller.rb:62:in `index'
/Users/ct/.rvm/gems/ruby-1.9.2-rc2@og/gems/actionpack-3.0.0.beta4/lib/action_controller/metal/implicit_render.rb:4:in `send_action'
/Users/ct/.rvm/gems/ruby-1.9.2-rc2@og/gems/actionpack-3.0.0.beta4/lib/abstract_controller/base.rb:145:in `process_action'
Run Code Online (Sandbox Code Playgroud)
我的索引控制器方法很简单:
def index
http = EM::HttpRequest.new("http://www.google.com/").get
render :text => http.response
end
Run Code Online (Sandbox Code Playgroud)
我有所有正确的宝石,我有1.9.2-rc2,rails 3 beta 4,而且我很瘦.我也得到了async-rails应用程序本身使用相同的rvm和gemset运行良好.eventmachine reactor肯定在我的应用程序中运行.我喜欢任何有关如何使其正常工作的提示!
我遇到了这种行为,并想知道是否有其他人看过它.我有一个解决方法,所以它不是一个显示阻止.
我在Heroku上用Cedar堆栈创建了一个新的应用程序.在演示多个环境时,我添加了以下config var:
heroku config:add RACK_ENV=staging --app appname
我在视觉上验证了环境var的设置,然后在我的简单Sinatra示例中放入以下路由:
get '/?' do
ENV['RACK_ENV']
end
Run Code Online (Sandbox Code Playgroud)
当我在笔记本电脑上进行本地测试时,我收到了预期development.
当我推到Heroku并在herokuapp.com上点击相同的路线时,我得到了development而不是staging.
我通过Procfile将Web服务器从Thin切换到Unicorn,并将更改推回到Heroku.
现在,当我到达路线时,我得到了预期staging.
有没有人见过这个?我在另一个运行Thin的项目上的解决方法是关闭New Relic应用程序名称的环境.(我没有切换到Unicorn,因为我需要New Relic来工作,目前Cedar和New Relic和Unicorn一起工作).
我使用以下说明在Ubuntu 10.04.4上使用Rails 3.2.3在瘦服务器上安装和配置服务:
http://articles.slicehost.com/2008/5/6/ubuntu-hardy-thin-web-server-for-ruby
瘦服务器可以从应用程序根运行它,使用'瘦启动'
但是,当我尝试使用以下任何命令运行该服务时:
service thin start
sudo service thin start
/etc/init.d/thin start
sudo /etc/init.d/thin start
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
/home/myuser/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:247:in `to_specs': Could not find thin (>= 0) amongst [bigdecimal-1.1.0, io-console-0.3, json-1.5.4, minitest-2.5.1, rake-0.9.2.2, rdoc-3.9.4] (Gem::LoadError)
from /home/myuser/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:256:in `to_spec'
from /home/myuser/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/site_ruby/1.9.1/rubygems.rb:1210:in `gem'
from /home/myuser/.rvm/gems/ruby-1.9.3-p125/bin/thin:18:in `<main>'
Run Code Online (Sandbox Code Playgroud)
这似乎不是PATH的问题,'瘦'正确返回:
home/myuser/.rvm/gems/ruby-1.9.3-p125/bin/thin
Run Code Online (Sandbox Code Playgroud)
我还在其所引用的地方验证了**/bin/thin的存在
我尝试使用'gem uninstall thin'重新安装gem,'gem install thin'没有成功
有谁之前经历过这个吗?我只发现了另一个此问题的实例: 无法通过远程计算机重新启动瘦身
这个问题似乎只是在ssh上,而我甚至无法在本地启动瘦服务
谢谢
我的瘦服务器配置了nginx,我的ROR应用程序正在运行.
thin restart当我发布代码更新时运行会给我的应用程序带来一些停机时间.我试图想象如何优雅地重新启动正在运行的Thin实例,但我找不到一个好的解决方案.
有没有人能够做到这一点?
public static Connection getConnection()throws SQLException,ClassNotFoundException
{ String username="scott";
String password="tiger";
String url="jdbc:oracle:thin:@localhost:1521";
Connection connection = null;
System.out.println("before class");
Class.forName("oracle.jdbc.OracleDriver");
System.out.println("Before connection");
connection=DriverManager.getConnection(url,username,password);
System.out.println("CONNECTED");
return connection;
}
Run Code Online (Sandbox Code Playgroud)
连接名称:orcl用户名:scott密码:tiger连接详细信息:scott @
我正在使用Oracle g11 Release 2,我已经在构建路径中包含了ojdbc.jar.尝试建立连接时,我收到以下堆栈跟踪错误:
java.sql.SQLException:Io异常:无效的连接字符串格式,有效格式为:"host:port:sid",位于oracle.jdbc.dbaccess的oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134). DBError.throwSqlException(DBError.java:179)位于oracle.jdbc.driver的oracle.jdbc.driver.OracleConnection上的oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:333).(OracleConnection.java:404). OracleDriver.getConnectionInstance(OracleDriver.java:468)位于java.sql.DriverManager.getConnection(未知来源)java.sql.DriverManager.getConnection(未知来源)的oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:314) )com.adobe.util.DBConnection $ DBUtil.getConnection(DBConnection.java:23)at com.adobe.daoimpl.DBimplementation.registration(DBimplementation.java:21)at com.adobe.service.AdobeService.registration(AdobeService. java:13)at webservice.Web.service(Web.java:16)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.inv 来自org.apache.axis.providers.java.RPCProvider.invokeMethod(RPCProvider.java)的java.lang.reflect.Method.invoke(未知来源)的sun.reflect.DelegatingMethodAccessorImpl.invoke(未知来源)的oke(未知来源): 397)在org.apache.axis的org.apache.axis.providers.java.RPCProvider.processMessage(RPCProvider.java:186)org.apache.axis.providers.java.JavaProvider.invoke(JavaProvider.java:323) .strategies.InvocationStrategy.visit(InvocationStrategy.java:32)org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)atg.apache.axis.SimpleChain.invoke(SimpleChain.java:83)at org.位于org.apache.axis.transport.http.AxisServlet的org.apache.axis.server.AxisServer.invoke(AxisServer.java:281)中的apache.axis.handlers.soap.SOAPService.invoke(SOAPService.java:454). doPost(AxisServlet.java:699)位于javax.servlet的org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327)的javax.servlet.http.HttpServlet.service(HttpServlet.java:647) .http.HttpServlet.service(HttpServlet的 .java:728)org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
提前致谢
解
我正在开发模式中切换到独角兽.需要一个针对每个递归级别的工作进程来防止死锁情况,因此我运行了2个工作进程.
问题
我正在开发环境中使用Thin服务器.我使用端口3000(dev环境中的默认值).我的问题是让服务器向自己发出请求.
假设我有以下控制器:
# app/controllers/recursions_controller.rb
class RecursionsController < ApplicationController
# /recursions
def index
# synchronously call recursions#show
RestClient.get("http://localhost:3000/recursions/1")
# finish!
render :text => 'index'
end
# /recursions/:id
def show
# finish immediately
render :text => 'show'
end
end
Run Code Online (Sandbox Code Playgroud)
这是相应的路线:
# config/routes.rb
resources :recursions
Run Code Online (Sandbox Code Playgroud)
这是我最初请求时请求日志的输出recursions#index:
[INFO] 2013-01-15 12:09:05 -0800 Started GET "/recursions" for 127.0.0.1 at 2013-01-15 12:09:05 -0800
Processing by RecursionsController#index as HTML
Completed 500 Internal Server Error in 60049ms
[FATAL] 2013-01-15 12:10:05 -0800 RestClient::RequestTimeout …Run Code Online (Sandbox Code Playgroud) 我正在创建一个Sinatra应用程序,它采用上传的CSV文件并将其内容放入哈希值.当我在app.rb中引用此哈希时,如下所示:
hash = extract_values(path_to_filename)
我一直收到此错误消息:
用于Hash的未定义方法`bytesize':0x007fc5e28f2b90 #object_id
file:utils.rb位置:bytesize行:335
我在某处读到这是一个Webrick问题.我切换到Thin,错误是一样的.
我的哈希/ CSV文件的大小非常小,所以它不是问题.
我正在使用ruby 1.9.3p374.
谢谢!
我正在尝试找到一种方法将生产Rails服务器绑定到端口80,而无需使用root权限运行整个服务器.我的问题基本上与" 在Linux上绑定到"特权"端口(<1024)的非根进程有没有办法? ",除了我需要使用Rails执行此操作.目前,我引用的问题的前两个答案要求我授予CAP_NET_BIND_SERVICERuby解释器的权限(可能不是一个好主意)或在启动服务器后删除root权限(我不确定Ruby是否可行).有任何想法吗?
我有一个带有简单控制器的Rails 4.1应用程序,该控制器可以流式传输响应:
class ServerSentEventsController < ApplicationController
include ActionController::Live
def index
response.headers['Content-Type'] = 'text/event-stream'
sse = ServerSentEvent.new(response.stream)
begin
loop do
sse.write(time: Time.now)
sleep 1
end
rescue IOError
# When the client disconnects, we'll get an IOError on write
ensure
sse.close
end
end
end
Run Code Online (Sandbox Code Playgroud)
当我将puma添加到我的gemfile并使用此路由针对此路由发出请求时,curl得到的响应是预期的:
curl -i 'http://localhost:3000/sse'
<!-- truncated headers output -->
data: {"time":"2014-08-29 05:16:00 +0100"}
data: {"time":"2014-08-29 05:16:01 +0100"}
data: {"time":"2014-08-29 05:16:02 +0100"}
Run Code Online (Sandbox Code Playgroud)
当我切换到薄在我的Gemfile,并要求整个事情锁定。我在多个地方都读过,thin可以处理并发请求,但是我似乎无法使其正常工作。
我只是通过跑步来开始美洲豹bundle exec rails server。对于瘦身我已经尝试了bundle exec rails server …
如何从命令行运行Sinatra应用程序作为deamon?
它使用Thin:
ruby app.rb -p 3000 -e production
Run Code Online (Sandbox Code Playgroud)
我不喜欢在app.rb中设置它.我想从命令行deamonise它.
thin ×10
ruby ×5
sinatra ×2
unicorn ×2
asynchronous ×1
capistrano ×1
eventmachine ×1
hash ×1
heroku ×1
java ×1
linux ×1
nginx ×1
oracle11g ×1
sqlexception ×1
staging ×1
webrick ×1