我有一个自制的Sinatra应用程序,我打算使用Heroku来托管它.
我在开发中使用foreman和shotgun,使用以下Procfile:
web: shotgun config.ru -s thin -o 0.0.0.0 -p $PORT -E $RACK_ENV
Run Code Online (Sandbox Code Playgroud)
它适用于开发和生产.但事实是,我不想在生产中使用霰弹枪,因为它太慢了.
当我管理工头时,我得到以下内容:
> foreman start
16:47:56 web.1 | started with pid 27122
Run Code Online (Sandbox Code Playgroud)
只有当我停止它(通过ctrl-c)它才会显示我缺少的东西:
^CSIGINT received
16:49:26 system | sending SIGTERM to all processes
16:49:26 web.1 | => Booting Thin
16:49:26 web.1 | => Rails 3.0.0 application starting in development on http://0.0.0.0:5000
16:49:26 web.1 | => Call with -d to detach
16:49:26 web.1 | => Ctrl-C to shutdown server
16:49:26 web.1 | >> Thin web server (v1.3.1 codename Triple Espresso)
16:49:26 web.1 | >> Maximum connections set to 1024
16:49:26 web.1 | …Run Code Online (Sandbox Code Playgroud) 我一直在尝试完成本教程,但遇到了问题foreman start.我正在使用Windows 7,64位机器,我试图在Heroku Toolbelt提供的git bash终端中执行此操作.
当我进入时,foreman start我收到:
sh.exe": /c/Program Files (x86)/Heroku/ruby-1.9.2/bin/foreman: "c:/Program: bad
interpreter: No such file or directory
Run Code Online (Sandbox Code Playgroud)
因此,我尝试通过键入cmd然后使用foreman start(类似于对此问题的答案之一的评论建议)在git bash中输入cmd .这就是产生的:
Bad file descriptor
c:/Program Files (x86)/Heroku/ruby-1.9.2/lib/ruby/gems/1.9.1/gems/foreman-0.62.0
/lib/foreman/engine.rb:377:in `read_nonblock'
c:/Program Files (x86)/Heroku/ruby-1.9.2/lib/ruby/gems/1.9.1/gems/foreman-0.62.0
/lib/foreman/engine.rb:377:in `block (2 levels) in watch_for_output'
c:/Program Files (x86)/Heroku/ruby-1.9.2/lib/ruby/gems/1.9.1/gems/foreman-0.62.0
/lib/foreman/engine.rb:373:in `loop'
c:/Program Files (x86)/Heroku/ruby-1.9.2/lib/ruby/gems/1.9.1/gems/foreman-0.62.0
/lib/foreman/engine.rb:373:in `block in watch_for_output'
21:06:08 web.1 | exited with code 1
21:06:08 system | sending SIGKILL to all processes
Run Code Online (Sandbox Code Playgroud)
我不知道第二组错误试图告诉我什么,因为它似乎声称engine.rb正在运行的文件位置甚至不存在于我的计算机上. …
我认为这是一个简单易行的问题!
我正在使用.env文件来保存我的所有环境变量,而我正在使用foreman.
不幸的是,运行rails控制台时没有加载这些环境变量,rails c所以我现在在运行控制台后手动加载它们,这不是最好的方法.
我想知道是否有更好的方法.
我正在尝试为rails应用程序运行"foreman start"但是这条错误消息阻止我正确运行领班:
~~>错误:有些东西正在使用端口1025.您是否已经在运行MailCatcher?
我试过杀死PID,进入Web界面退出程序,还...重新启动comp.有人知道如何解决这个问题吗?
谢谢
我希望能够在我的Django应用程序中设置环境变量,以便能够运行测试.例如,我的观点依赖于几个API密钥.
有一些方法可以在测试期间覆盖设置,但我不希望它们被定义,settings.py因为这是一个安全问题.
我已经尝试在我的设置函数中设置这些环境变量,但这不能为Django应用程序提供值.
class MyTests(TestCase):
def setUp(self):
os.environ['TEST'] = '123' # doesn't propogate to app
Run Code Online (Sandbox Code Playgroud)
当我在本地测试时,我只是有一个.env我运行的文件
foreman start -e .env web
Run Code Online (Sandbox Code Playgroud)
提供os.environ价值.但是在Django中unittest.TestCase它没有办法(我知道)设置它.
我怎么能绕过这个?
我刚刚进入rails编程,看起来我可以使用两个程序在本地运行我的项目:rackup和foreman.
我注意到的一个区别是,工头不会输出一些我希望看到的东西,我会看到我是否运行了机架,直到我按ctrl + c关闭服务器.然后出现所有这些消息,就像它们被隐藏一样.
是否有一个原因?我怎样才能让工头更加冗长?
我使用node.js在JavaScript中编写的Web应用程序.我使用Foreman,但每次更改代码时我都不想手动重启服务器.我可以告诉Foreman在处理HTTP请求之前重新加载整个Web应用程序(即重启node过程)吗?
在生产与发展方面表现不同的"工头方式"是什么?那就是我们希望工头开始在开发中启动一堆东西,但是在heroku生产中我们不需要它启动(例如)solr.