小编mat*_*att的帖子

具有多个env_files的docker-compose.yml

我试图让一个docker-compose文件处理多个.env文件,我没有运气.我正在尝试设置三个.env文件:

  • 所有容器实例中的全局设置相同
  • 特定于环境的设置(仅用于测试或开发的东西)
  • 本地设置 - 开发人员可能需要更改的可覆盖的东西,以防它们与端口号发生冲突

我的docker-compose.yml文件看起来像这样:

version: '2'
services:
  db:
    env_file:
      - ./.env
      - ./.env.${ENV}
      - ./.env.local
    image: postgres
    ports:
      - ${POSTGRES_PORT}:5432
Run Code Online (Sandbox Code Playgroud)

.env 看起来像这样:

POSTGRES_USER=myapp
Run Code Online (Sandbox Code Playgroud)

.env.development看起来像这样:

POSTGRES_PASSWORD=supersecretpassword
POSTGRES_HOST=localhost
POSTGRES_PORT=25432
POSTGRES_DB=myapp_development
Run Code Online (Sandbox Code Playgroud)

.env.local 在这种情况下不存在.

运行后ENV=development docker-compose up,我收到以下输出:

$ ENV=development docker-compose up
WARNING: The POSTGRES_PASSWORD variable is not set. Defaulting to a blank string.
WARNING: The POSTGRES_DB variable is not set. Defaulting to a blank string.
WARNING: The POSTGRES_PORT variable is not …
Run Code Online (Sandbox Code Playgroud)

docker docker-compose

14
推荐指数
4
解决办法
8399
查看次数

使用maven-bundle-plugin安装OSGi依赖项

我有一个java项目,可以编译成OSGi包.我正在使用maven-bundle-plugin来创建捆绑包,使用maven-sling-plugin将捆绑包推送到我正在运行的OSGi服务器.目前,我的项目有两个依赖项(Guava和Gson)需要在安装捆绑包之前手动安装在Felix服务器中.这两个依赖包的手动安装只需要发生一次(首次设置OSGi服务器时),但由于这是一个手动过程,我有点想将其推入"mvn install"阶段.

我看了很多maven插件(maven-sling-plugin,maven-ipojo-plugin,依赖插件等),但我担心我没有足够的知识知道从哪里开始,甚至在Stackoverflow中搜索解决方案(我怀疑这已经得到了解答).

那么 - 是否有一种干净的方式来安装/启动依赖捆绑与maven?我可以在哪里指定jar和运行级别,并在安装我的软件包之前进行安装?

java osgi maven maven-bundle-plugin

11
推荐指数
1
解决办法
1947
查看次数

集成(Selenium)测试后回滚数据库

有没有人对通过集成测试框架(如Selenium)回滚数据库事务的最佳实践或首选方法提出任何建议?

以下是我们目前的情况:我们有一个.net web项目,其中包含许多单元测试,在我们的单元测试环境中运行良好 - 每个测试都继承了一个在[SetUp]中打开事务的父类,并回滚了事务. [TearDown].每次测试后,我们的单元测试数据库都会恢复到原始状态.

但是,一旦我们进入集成环境,事情就会发生变化.我们的持续集成服务器自动编译我们的提交并将它们推送到测试服务器,以便服务器始终运行在最新的代码上.我们还设置了一个Selenium实例来自动化用户与站点的交互.selenium测试基本上与现有的Selenium服务器通信,并告诉服务器诸如"启动浏览器并转到http://testsite/TestPage.aspx - 在id'def '的表单字段中输入文本'abc' - 断言新页面包含文字'xyz'"

每个测试都以类似于我们的vanilla单元测试的方式运行,但有一个重要的例外:Selenium所做的任何更改都是在完全不同的线程/应用程序中完成的,因此我们不能(我认为我们不能,至少)在测试拆解时将它们卷回来.

我们还没有找到一个很好的解决方案.现在我们正在使用SqlCommand来执行sql语句来备份数据库,然后在测试结束时,我们将数据库设置为单个用户,删除当前数据库并恢复旧副本 - 这不太理想,因为它有效地杀死了附加到数据库的应用程序,并要求我们再次重新初始化应用程序.

这是一个以前解决过的问题吗?任何建议都会很棒.

谢谢!

.net testing selenium integration-testing

10
推荐指数
1
解决办法
4460
查看次数

方法返回一个IDisposable - 我应该处理结果,即使它没有分配给任何东西?

这似乎是一个相当简单的问题,但在搜索之后我找不到这个特殊的用例.

假设我有一个简单的方法,比如确定某个进程是否打开了一个文件.我可以这样做(不是100%正确,但相当不错):

public bool IsOpen(string fileName)
{
  try
  {
    File.Open(fileName, FileMode.Open, FileAccess.Read, FileShare.None);
  }
  catch
  {
    // if an exception is thrown, the file must be opened by some other process
    return true;
  } 
}
Run Code Online (Sandbox Code Playgroud)

(显然,这不是确定这一点的最佳或甚至是正确的方法 - File.Open会抛出许多不同的异常,所有异常都具有不同的含义,但它适用于此示例)

现在File.Open调用返回a FileStream,并FileStream实现IDisposable.通常我们想要FileStream在使用块中包装任何实例化的用法,以确保它们被正确处理掉.但是在我们实际上没有将返回值分配给任何东西的情况下会发生什么?是否仍然需要处理FileStream,如下:

try
{
  using (File.Open(fileName, FileMode.Open, FileAccess.Read, FileShare.None));
  { /* nop */ }
}
catch 
{
  return true;
}
Run Code Online (Sandbox Code Playgroud)

我应该创建一个FileStream实例并处理它吗?

try
{
  using (FileStream fs = File.Open(fileName, FileMode.Open, FileAccess.Read, FileShare.None)); …
Run Code Online (Sandbox Code Playgroud)

c# idisposable

5
推荐指数
2
解决办法
1903
查看次数

将 ActionCable 连接到不同的主机

我正在运行一个 rails 5 应用程序作为后端服务器,以及一个用于前端应用程序的 ember 应用程序。它们是托管在两个不同域上的两个独立应用程序 - 例如,backend.devfrontend.dev

rails 应用程序有一个简单的连接类app/channels/application_cable/connection.rb,如下所示:

module ApplicationCable
  class Connection < ActionCable::Connection::Base
    def connect
      Rails.logger.debug("env: #{env.inspect}")
      Rails.logger.info("cookies.signed: #{cookies.signed.inspect}")
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

我有一个简单的基本频道类,app/channels/application_cable/channel.rb如下所示:

module ApplicationCable
  class Channel < ActionCable::Channel::Base
  end
end
Run Code Online (Sandbox Code Playgroud)

以及该类的单个实现app/channels/events_channel.rb

class EventsChannel < ApplicationCable::Channel
  def subscribed
    Rails.logger.debug("env: #{env.inspect}")
    Rails.logger.info("cookies.signed: #{cookies.signed.inspect}")
    stream_from 'events'
  end
end
Run Code Online (Sandbox Code Playgroud)

在事情的余烬方面,我正在使用 ember-cable 包。我已经通过使用以下扩展控制器类在我的前端设置了我的使用者:

cableService: Ember.inject.service('cable'),

setupConsumer: Ember.on('init', function() {
  let service = this.get('cableService');
  let consumer = service.createConsumer(`ws://backend.dev`);
  let channel = 'EventsChannel';

  consumer.subscriptions.create(channel, …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails ember.js actioncable

4
推荐指数
1
解决办法
1271
查看次数

使用正则表达式进行条件替换

当谈到正则表达式时,我是一个相对新手,但我开始掌握它.我开始在java中编写一个方法来"链接"一个字符串 - 也就是说,扫描它以获取任何url引用(即"http:// ...")或看起来像web地址的字符串("www.example. COM ...")

所以,例如,如果我有一个看起来像这样的字符串:

My favorite site is http://www.example.com.  What is yours?
Run Code Online (Sandbox Code Playgroud)

在通过该方法运行之后,您将获得一个字符串,表示:

My favorite site is <a href="http://www.example.com">http://www.example.com</a>.  What is yours?
Run Code Online (Sandbox Code Playgroud)

网上淘了一段时间后,我终于可以不同的表达,帮助我做什么我要找的(一些例子包括网址在实际的URL结束,一些编码URL已经尾随句的部分拼凑锚标签等)

这是我到目前为止:

public static String toLinkifiedString(String s, IAnchorBuilder anchorBuilder)
{
    if (IsNullOrEmpty(s))
    {
        return Empty;
    }

    String r = "(?<![=\"\"\\/>])(www\\.|(http|https|ftp|news|file)(s)?://)([\\w+?\\.\\w+])+([a-zA-Z0-9\\~\\!\\@\\#\\$\\%\\^\\&amp;\\*\\(\\)_\\-\\=\\+\\\\\\/\\?\\.\\:\\;\\'\\,]*)?([^.|'|# |!])";

    Pattern pattern = Pattern.compile(r, Pattern.DOTALL | Pattern.UNIX_LINES | Pattern.CASE_INSENSITIVE);
    Matcher matcher = pattern.matcher(s);
    if (anchorBuilder != null)
    {
        return matcher.replaceAll(anchorBuilder.createAnchorFromUrl("$0"));
    }
    return matcher.replaceAll("<a href=\"$0\">$0</a>"); // group 0 is the whole expression
} …
Run Code Online (Sandbox Code Playgroud)

java regex replace

2
推荐指数
1
解决办法
4971
查看次数

获取请求正确解析我的控制器,但没有调用正确的(或任何)操作

我有一个有两个模型的网络项目 - IndicatorModelGranteeModel.我也有相应的ApiControllers - IndicatorsController,和GranteesController.我打算将这个设置用于我的实际web项目的数据API,所以我在我的项目中创建了一个名为"Api"的新区域.在我的ApiAreaRegistration班上,我正在为这些控制器注册路由,如下所示:

context.Routes.MapHttpRoute(
  name: "ApiDefault",
  routeTemplate: "api/{controller}/{id}",
  defaults: new { id = RouteParameter.Optional }
);
Run Code Online (Sandbox Code Playgroud)

基本上,http://myapp/api/indicators/123应该转到Indicators控制器的请求,它应该特别由接受整数参数的action方法处理.我的控制器类设置如下,它完美地工作:

public class IndicatorsController : ApiController
{
    // get: /api/indicators/{id}
    public IndicatorModel Get(int id)
    {
        Indicator indicator = ...// find indicator by id
        if (indicator == null)
        {
            throw new HttpResponseException(HttpStatusCode.NotFound);
        }
        return new IndicatorModel(indicator);
    }
}
Run Code Online (Sandbox Code Playgroud)

我的GranteesController课程设置相同:

public class GranteesController : ApiController
{
    // get: /api/grantees/{id}
    public GranteeModel Get(int …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc-routing asp.net-web-api

2
推荐指数
1
解决办法
3880
查看次数