https://devcenter.heroku.com/articles/deploying-to-a-custom-rails-environment上的 Heroku 文档说我不应该使用 staging.rb 文件来定义我的暂存环境。
\n\n\n创建另一个自定义环境(例如 \xe2\x80\x9cstaging\xe2\x80\x9d)并创建 config/environments/staging.rb 并使用 RAILS_ENV=staging 部署到 Heroku 应用程序可能很诱人。
\n这不是一个好的做法。相反,我们建议始终在生产模式下运行并通过设置配置变量来修改任何行为。
\n
我认为这是一个糟糕的建议,并且与完善的 Rails 最佳实践相冲突。不过,我并不是来争论最佳实践的。我来这里是想问:
\n有什么理由不在 Heroku 上使用 RAILS_ENV=staging 吗?
\n如果我创建 staging.rb 文件并像这样设置 xxx_ENV 配置变量,是否会有任何问题?
\nheroku config:add RACK_ENV=staging --remote staging\nheroku config:add RAILS_ENV=staging --remote staging\nRun Code Online (Sandbox Code Playgroud)\n 我们的工作流程目前有开发人员在本地托管我们的Web应用程序副本,使用SVN进行源代码管理.我们有后提交钩子,它将每个新修订部署到在子域上运行的指定登台环境.
我的问题是,限制访问这些临时站点的最佳方法是什么,以便它们不会被偶然发现或上帝禁止搜索引擎索引?
我们真的想避免任何基于IP的东西,因为我们让远程开发人员不可避免地从动态IP中工作.
我有一些初步的想法,例如一个简单的表单,您可以使用登录凭据来获取a)为您提供在登台环境中运行时检查的访问cookie,或者b)将您当前的IP地址注册为允许的确定长度时间
如果有人可以分享想法,以前的经验或最佳实践,将非常感谢
我目前正在位于www.example.com/staging的临时环境中的某个站点上工作.该站点的所有链接都已相对设置(例如:/ about /).我正在尝试编写一些简单的jQuery来为页面上的每个链接添加"/ staging",因此我不必更改本周的所有链接,因此它在暂存环境中.我知道HTML标签是一个选项,但因为链接是使用ExpressionEngine动态添加的,似乎不起作用.我认为jQuery应该相当简单.这就是我所拥有的,但有些事情并不恰当:
$(function() {
var href = $('a').attr('href');
$(href).prepend('/staging');
});
Run Code Online (Sandbox Code Playgroud)
在此先感谢您的帮助.
所以我一直在使用 Autotools 尝试学习工具链,以便我可以在我的一些跨平台项目中使用它。我已经很好地掌握了最基本的知识,但我在这里遇到了一个问题。
在我的源代码树中,我有一个“data”文件夹,其中包含一个带有 XML 文件的子目录和另一个带有图像文件的子目录。
IE:
data\
cars\
images
Run Code Online (Sandbox Code Playgroud)
我希望能够使用相同的目录结构将这些文件复制到暂存区。
我试过在数据中创建一个 Makefile.am ,然后做类似的事情:
data_DATA = cars/file1.xml cars/file2.xml images/image1.png images/image2.png
Run Code Online (Sandbox Code Playgroud)
等等...
这“几乎”有效。它将所有文件复制到暂存区的“共享”文件夹中,但底层目录结构丢失;所有文件都在“共享”根目录中。
有关如何完成此操作的任何提示?
编辑:
啊我似乎已经想通了(我想。)
data_carsdir = $(prefix)/data/cars
data_cars_DATA = cars/file1.xml cars/file2.xml
data_imagesdir = $(prefix)/data/images
data_images_DATA = images/image1.png images/image1.png
Run Code Online (Sandbox Code Playgroud)
这似乎以我想要的方式工作。
我有一个git项目并部署到heroku.远程网址是git@heroku.com:myappname.git.git/config看起来像这样:
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/*
url = git@heroku.com:myappname.git
[branch "master"]
remote = origin
merge = refs/heads/master
Run Code Online (Sandbox Code Playgroud)
我刚刚创建了一个名为"myappname-staging"的新的heroku应用程序,我想将其用作此应用程序的临时站点.我想我会设置它以便"master"分支推送到生产遥控器并且"development"分支推送到staging遥控器.这是处理这种情况的合理/传统方式吗?
我无法弄清楚如何做到这一点.当我在heroku上制作临时应用程序时,它给了我这个回复:
Creating myappname-staging.... done
http://myappname-staging.heroku.com/ | git@heroku.com:myappname-staging.git
Git remote heroku added
Run Code Online (Sandbox Code Playgroud)
我的配置现在看起来像这样:
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/*
url = git@heroku.com:myappnamestef.git
[branch "master"]
remote = origin
merge = refs/heads/master
[remote "heroku"]
url = git@heroku.com:myappname-staging.git
fetch …Run Code Online (Sandbox Code Playgroud) 我使用git进行版本控制.我有一个开发,升级和生产环境.当我完成开发时,我会推送到客户端进行审查.批准后,我将更改从分段推送到生产.只要没有数据库更改,这样就可以正常工作.如果我通过Magento连接在本地开发上安装模块并且它进行数据库修改会发生什么.
由于生产服务器总是在变化,我如何将这些更改推送到生产服务器?
编辑:
我写了两个shell脚本.将生产数据库下载到我的开发服务器,将基本URL替换为develpment url并相应地更新我的开发db.它还将生产sql转储保留在我的git仓库中.我不确定将原始转储保留在源代码控制中是否有益,但我会尝试一下.第二个脚本将开发数据库移动到暂存,并基本上执行与第一个相同的操作.
现在到了生产的时候,我将更新后的生产仓库拉到生产服务器上,让magento做到这一点.我最近也开始使用SQLYog并且它有一个数据库比较向导,它将为我提供开发和生产数据库的差异,并允许我有选择地合并更改.它总是创建一个我添加到源代码控制的迁移脚本.如果出现任何问题,我可以进行比较以查看是否遗漏了任何内容.
这对你们来说听起来像是一个体面的工作流程吗?
When Local Live staging is enabled for a site, a clone of the site is created
containing copies of all of the site’s existing pages.
Run Code Online (Sandbox Code Playgroud)
我正在尝试保护我的暂存站点(mvc5应用程序),目前正在执行以下操作:
public class HomeController : Controller
{
public ActionResult Index()
{
if (Request.IsAuthenticated){
return View();
}
return RedirectToAction("Login", "Account");
}
Run Code Online (Sandbox Code Playgroud)
以上是太费力了,不能正确,我确信我不应该通过身份验证检查单独包装我的所有视图,但是我似乎无法在一个位置添加支票?
我正在使用该renv包来保持我的 R 项目在计算机之间保持相同。我看到我的 R 项目文件夹中有一个子文件夹renv/staging。该文件夹再次包含多个子文件夹,名称从 1 到 XX(在我的例子中为 38)。其中一些文件夹包含数千个文件,这导致我的设备之间的同步经常崩溃。
我假设这些子文件夹包含我的 R 项目包的某个阶段以及每当我更改某项时。(例如更新包),将创建一个新文件夹。
问题是:我可以简单地删除旧文件夹并保留当前文件夹(但在我的情况下是空的)吗?
遗憾的是,renv 网站没有透露有关这些暂存文件夹和子文件夹的任何信息。
我试图了解部署槽的工作原理(https://learn.microsoft.com/en-us/cli/azure/webapp/deployment?view=azure-cli-latest)。
我运行以下命令来创建一个新的暂存槽:
az functionapp deployment slot create --name MyFunctionapp --resource-group MyResourceGroup --slot staging
Run Code Online (Sandbox Code Playgroud)
我看到两个部署槽处于“正在运行”状态。它是否应该一次只运行 1 个插槽?如果是这样,我该如何阻止?
我在配置中有一些应用程序设置。这个复选框表示什么?请帮助我理解。