草庐IT

capistrano-env

全部标签

ruby-on-rails - 为什么 Assets 不使用 RAILS_ENV 集进行预编译?

我几乎浏览了网络上的每一篇文章来解决这个问题,但到目前为止没有任何帮助。这是怎么回事。我使用Capistrano来部署我的应用程序,直到昨天一切都运行良好。无论如何,我都无法预编译我的Assets。因此,当我在生产服务器上本地执行rakeassets:precompile只是为了检查Assets是否完全被预编译时,它一切正常。但是,当我执行RAILS_ENV=productionrakeassets:precompile时,它失败了。我尝试了不同的环境,但除了省略RAILS_ENV之外没有任何效果。我面临的问题是我的最新更改没有反射(reflect)在生产中。这里是错误痕迹I,[201

ruby-on-rails - 如果 Unicorn 启动新进程失败,Capistrano 能通知我吗

我的Unicorn故事:我部署,部署失败(堆栈或其他),响应是部署完成,除非我查看日志,否则我不知道所提供的代码是正确的代码。即使查看Unicorn切换进程时我必须查看的日志。我启动了一个unicorn,它启动了pid=Apid=Afork到B,C,D,EA是主人当我用USR2给A发信号时它再次fork自己(F)通常F次执行F现在是master(但不控制套接字)FforkG、H、I、J(如果可以的话),然后通知A退出A捕获QUIT,清理自身,并将套接字移交给FF运行新代码直到我们重新部署但是...如果部署的代码堆栈-应用程序无法启动F重新执行,F失败,然后回到A部署失败,新代码在旧进程

ruby - 在 capistrano 的阶段文件上设置应用程序名称

我正在尝试使用多阶段/扩展来部署我的应用程序。当每个阶段位于不同的服务器时,它工作正常。但是对于一个特定的项目,我想将两个阶段部署到同一台服务器。为此,我需要在每台服务器上设置不同的应用程序名称。这就是行不通的原因。我将application变量移动到阶段文件,并定义了延迟加载的deploy_to变量。配置/部署.rbset:stages,%w(productionbeta)set:default_stage,"beta"require'capistrano/ext/multistage'#set:application,"myapp-beta"set:user,"deploy"set

ruby - Capistrano:require_relative 没有按预期工作

假设以下Rails设置:轨道3.2.9Capistrano2.13.5使用多级扩展(即capistrano/ext/multistage)定义的生产阶段,例如在Rails.root/config/deploy/production.rb中。在production.rb中,你不能使用require_relative,看起来——你最终会收到“无法推断基本路径”错误。但是,如果您只是普通的rubyproduction.rb,则require_relative可以正常工作。为什么会这样?似乎Capistrano加载/执行代码的方式使得require_relative无法按预期工作。我怀疑这类似

ruby-on-rails - Capistrano 3 - 理解任务

我试图了解capistrano3.1是如何工作的,但由于它缺乏文档(它的capistrano,所以......),我的理解低于我的理解。让我解释一下。这是从capistrano/railsgem中摘录的片段namespace:deploydodesc'Runsrakedb:migrateifmigrationsareset'task:migrate=>[:set_rails_env]doonprimaryfetch(:migration_role)dowithinrelease_pathdowithrails_env:fetch(:rails_env)doexecute:rake,"d

ruby-on-rails - 为什么 Capistrano 将通过命令传递给 `run` 的标志解释为输入?

我正在尝试这样做:run"echo-n'foo'>bar.txt"bar.txt的内容最终变成了:-nfoo\n(\n代表一个实际的换行符)我将run用于其他命令,如rm-rf,据我所知,它运行良好。 最佳答案 我刚刚在manecho中发现了这个:Someshellsmayprovideabuiltinechocommandwhichissimilaroridenticaltothisutility.Mostnotably,thebuiltinechoinsh(1)doesnotacceptthe-noption.Consultth

ruby - Capistrano、防火墙和隧道

我们正在使用Capistrano自动将新版本的PHP应用程序推送到生产服务器。生产服务器(我们称之为生产)是公共(public)的,而我们的存储服务器(我们称之为repo)与我们自己的机器一起位于我们公司的防火墙后面。默认情况下配置的Capistrano将无法工作,因为生产无法与repo通信。我想知道是否可以通过某种方式将capistrano设置为先通过SSHrepo,然后通过SSH连接到生产环境,在端口上打开一个隧道,然后我可以使用该隧道从生产环境通过SSH返回到repo以从SCM拉取更改。我只是不知道如何设置它或找出更好的解决方案。想法?编辑:我已经试过了:role:web,"de

ruby - Capistrano 的每个角色设置

我目前正在使用多阶段扩展,但在每个阶段中我都有一个角色需要不同的:user和:deploy_to路径。示例deploy/production.rb:role:web,'myhost1'role:queue,'myhost2'两台服务器都需要checkout版本,但:web角色使用/var/www/html,其中:queue使用/home/username/path/to/releases,并且都使用不同的SSH用户。我也有一个类似配置的暂存和qa阶段(两者在不同的服务器上都有:web和:queue角色)。如何设置这些特定于角色的选项? 最佳答案

ruby-on-rails - NoMethodError:ActionMailer::TestCase 中 nil:NilClass 的未定义方法 'env'

我开始使用ruby​​onrails并创建了一个示例应用程序。在这个应用程序中,我有一个邮件类和一个测试生成的邮件类。除了来自ActionMailer::TestCase的测试,我设法使所有测试都正常工作。每次运行测试时,我都会收到一条错误消息:NoMethodError:undefinedmethod'env'fornil:NilClass.我生成的邮件程序测试方法如下所示:test"new_project"domail=ProjectMailer.new_projectassert_equal"Newproject",mail.subjectassert_equal["to@exa

ruby-on-rails - rails 上的 ruby "usr/bin/env: ‘ruby2.3’ : No such file or directory"

当我在终端上输入bundleexecrakedb:migrate时遇到了一些问题然后我收到类似`/usr/bin/env:‘ruby2.3’:Nosuchfileordirectory 最佳答案 我有同样的问题但是在运行时:railsnewmy_application但在通过以下方式重新安装railsgems之后:geminstallrails它工作得很好,我可以运行:railsnewmy_applicationbundleinstall和bundleexecrailss没有任何问题。