小编bio*_*net的帖子

如何在代理后面使用bundler?

我从sudo bundle install命令获得以下输出:

Fetching source index for `http://rubygems.org/`  
Could not reach rubygems repository `http://rubygems.org/`  
Could not find gem 'rspec-rails (>= 2.0.0.beta.22, runtime)' in any of the gem sources.
Run Code Online (Sandbox Code Playgroud)

我正确设置了$ http_proxy并且我已经添加了gem:--http-proxy =我的代理到〜/ .gemrc.这些设置允许我的gem命令工作,我希望他们会转换为bundler,但没有这样的运气.

思考sudo可能不会继承我的所有环境,我也将这些设置添加到我的root用户,但是nada.

此时,bundler阻止我部署我的应用程序,我发现很少有其他人遇到这个问题.如果没有人有答案,我将被迫从我的Rails应用程序(我不介意做...)中破解捆绑器

ruby proxy rubygems ruby-on-rails bundler

52
推荐指数
4
解决办法
7万
查看次数

机架并发 - rack.multithread,async.callback,或两者兼而有之?

我试图完全理解Rack中并发请求处理的选项.我已经使用async_sinatra来构建一个长轮询应用程序,现在正在尝试使用裸机Rack throw :async和/或Thin的--threaded标志.我对这个问题很满意,但有一些我无法理解的事情.(不,我并不误解并发性的并发性,是的,我确实理解GIL施加的限制).

Q1.我的测试表明thin --threaded(即rack.multithread=true)在不同的线程中同时运行请求(我假设使用EM),这意味着长时间运行的请求A不会阻止请求B(IO旁边).这意味着我的应用程序不需要任何特殊编码(例如回调)来实现并发(同样,忽略阻塞DB调用,IO等).这是我相信我观察到的 - 这是正确的吗?

Q2.还有另一种更常见的实现并发的方法,涉及EventMachine.deferthrow :async.严格来说,使用线程处理请求.它们是按顺序处理的,但是将它们的繁重工作和回调传递给EventMachine,后者使用async.callback在稍后发送响应.请求A已将其工作卸载到EM.defer后,请求B开始.它是否正确?

Q3.假设上述方法或多或少是正确的,那么一种方法对另一种方法有什么特别的优势吗?显然--threaded看起来像一个魔术子弹.有什么缺点吗?如果没有,为什么每个人都在谈论async_sinatra/ throw :async/ async.callback?也许前者是"我想让我的Rails应用程序在繁重的负载下变得更加快速",而后者更适合具有许多长时间运行请求的应用程序?或者规模是一个因素?只是在这里猜测.

我在MRI Ruby 1.9.2上运行Thin 1.2.11.(仅供参考,我必须使用该--no-epoll标志,因为EventMachine使用epoll和Ruby 1.9.2 存在一个长期的,据称解决但不是真正的问题.这不是重点,但任何见解都是受欢迎的.)

ruby rack thin

35
推荐指数
1
解决办法
4348
查看次数

有没有像 Python 的 Ruby 的 pty.fork 之类的东西?

我正在尝试将如下所示的 Python 代码移植到 Ruby:

import pty

pid, fd = pty.fork
if pid == 0:
  # figure out what to launch
  cmd = get_command_based_on_user_input()

  # now replace the forked process with the command
  os.exec(cmd)
else:
  # read and write to fd like a terminal
Run Code Online (Sandbox Code Playgroud)

由于我需要像终端一样读取和写入子进程,我明白我应该使用 Ruby 的 PTY 模块来代替 Kernel.fork。但它似乎没有等效的 fork 方法;我必须将命令作为字符串传递。这是我能得到的最接近 Python 功能的方法:

require 'pty'

# The Ruby executable, ready to execute some codes
RUBY = %Q|/proc/#{Process.id}/exe -e "%s"|

# A small Ruby program which will eventually replace itself with …
Run Code Online (Sandbox Code Playgroud)

ruby python linux fork pty

5
推荐指数
1
解决办法
530
查看次数

标签 统计

ruby ×3

bundler ×1

fork ×1

linux ×1

proxy ×1

pty ×1

python ×1

rack ×1

ruby-on-rails ×1

rubygems ×1

thin ×1