标签: development-environment

根据条件交付方式?导轨

Rails 4.1.4,我有很多类 Mailers,它们都有不同的传递方法。现在这给我带来了一个问题。

在开发和测试环境中,当我有delivery_method时,:test如果我使用下面的类执行和交付,那么交付方法就变成了:custom_method,即使我config.delivery_method = :test在rails环境文件中提到过。

class CustomMailer < ActionMailer::Base

  default :delivery_method => :custom_method,
          from: "...",
          reply_to: '...'

  def emailer(emails)
    mail(to: emails, subject: 'test')
  end

end
Run Code Online (Sandbox Code Playgroud)

在开发和测试环境中更改:custom_methodto的正确方法是什么?:test

我已经实施的一种可行的解决方案是:

class CustomMailer < ActionMailer::Base

  DELIVERY_METHOD = Rails.env == 'production' ? :custom_method : :test

  default :delivery_method => DELIVERY_METHOD,
          from: "...",
          reply_to: '...'

  def emailer(emails)
    mail(to: emails, subject: 'test')
  end

end
Run Code Online (Sandbox Code Playgroud)

这对我有用,但我觉得这不是一个好方法,因为我必须写这一行:

DELIVERY_METHOD = Rails.env == 'production' ? :custom_method : :test
Run Code Online (Sandbox Code Playgroud)

在每个 Mailer 类中,这可能会导致冗余。如果能以某种常见的方式处理那就太好了。

请注意,每个 …

development-environment ruby-on-rails actionmailer

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

如何在 Docker 容器内从头开始构建新应用程序?

Docker据说可以帮助隔离应用程序环境,并帮助开发人员运行相同的环境。但所有指南、教程、课程等都是从已经构建的应用程序开始的。那么我如何从头开始一个新的应用程序,比如说在 NodeJS 中?

所以最近我开始学习 docker,是的,如果我已经在本地主机上安装了所有内容,那么它对于打包已经构建的应用程序很有用。

但是我如何开始开发一个新的应用程序呢?例如在 NodeJS 中,由于主机没有安装 NodeJS,因此我无法访问npm init我的文件夹。我将如何安装新的软件包,如何node_modules持久化,等等?

这是我用于打包和应用程序的一些非常基础的设置......这不适合我从头开始。

FROM node:10-alpine

WORKDIR /usr/src/app

COPY package*.json ./
RUN npm install

COPY . .

CMD [ "npm", "start" ]
Run Code Online (Sandbox Code Playgroud)
version: '3'

services:
  example-service:
    build: .
    volumes:
      - .:/usr/src/app
      - /usr/src/app/node_modules
    ports:
      - 3000:3000
      - 9229:9229
    command: npm start
Run Code Online (Sandbox Code Playgroud)
dev:
  docker-compose up
Run Code Online (Sandbox Code Playgroud)

如代码中所示,我有一个自定义映像、一个 docker-compose 和一个 makefile。我可以改变其中的任何一部分或全部。我想要的是开发我的应用程序,除了docker之外,我的主机上没有安装任何东西,容器应该隔离应用程序所需的所有内容,最佳实践是在开发过程中保留安装的任何新包。

development-environment docker dockerfile docker-compose

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

是否可以将环境变量添加到 tsconfig.json 文件中?

我有一个 tsconfig.json 文件包含

{
  "extends": "../../zlux-app-manager/virtual-desktop/plugin-config/tsconfig.base.json",
  "include": [
    "src/**/*.ts",
    "../../zlux-platform/interface/src/mvd-hosting.d.ts"
  ],
  "compilerOptions": {
    "skipLibCheck": true
  }
}
Run Code Online (Sandbox Code Playgroud)

我想用环境变量替换../../ 。可能的解决方案有哪些?

development-environment environment-variables typescript tsconfig tsconfig-paths

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

根据开发环境分离 Google Analytics 数据

因此,我发现了一些类似的问题,但通常要么过时,不完全是我正在搜索的内容,要么他们不使用 Google 标签管理器,而是将标签写入<head>.

- - - - - -现在的情况- - - - - -

我们使用 Google 标签管理器在我们的网站上注入 Google Analytics 等标签。我们根据需要发生的情况使用多个标签;例如:

  • 跟踪页面
  • 跟踪特定点击
  • 跟踪登录或注册事件

所有数据都完美地传输至 Google Analytics

- - - - - -问题- - - - - -

但是,我们还从其他环境(例如localhost:3000或 )接收数据https://dev.ourdomain.com,这可能会导致数据不准确。

-----------我们想要的-----------

是一种分离数据的方法。通过以下任一方式:

  1. 将 Google Analytics 中的数据与生产(域 A)和开发中的数据(其他域)分开
  2. 在数据到达 Google Analytics 之前将其分离(就像我下面的建议)
  3. 或者也许还有其他建议

在第 1 点和第 2 点之间,我更喜欢第一种方式,因为这会将现有数据分为生产数据和开发数据。

-----------建议的解决方案-----------

我一直在考虑使用新的属性,然后使用 Google 跟踪代码管理器,我将根据当前域返回 Google Analytics 设置。生产才会回归UA-code-1、发展UA-code-2 …

development-environment google-analytics production-environment google-tag-manager

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

如何从 ASP.NET Core 中的 Program.cs 访问 IWebHostEnvironment

我有 ASP.NET Core Razor 页面应用程序,我想IWebHostEnvironment在我的Program.cs. 我在应用程序开始时播种数据库,并且需要将其传递IWebHostEnvironment给初始化程序。这是我的代码:

程序.cs

public class Program
{
    public static void Main(string[] args)
    {
        var host = CreateHostBuilder(args).Build();

        using (var scope = host.Services.CreateScope())
        {
            var services = scope.ServiceProvider;

            try
            {
                SeedData.Initialize(services);
            }
            catch (Exception ex)
            {
                var logger = services.GetRequiredService<ILogger<Program>>();
                logger.LogError(ex, "An error occurred seeding the DB.");
            }
        }

        host.Run();
    }

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.UseStartup<Startup>();
            });
}
Run Code Online (Sandbox Code Playgroud)

种子数据.cs

    public static class SeedData
    {
        private …
Run Code Online (Sandbox Code Playgroud)

c# development-environment dependency-injection asp.net-core

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

从 ruby​​ 2.7 升级到 3.0 时遇到问题 - 错误:使用未声明的标识符“RUBY_FUNCTION_NAME_STRING”

我已经在努力尝试升级 Rails 3.0 大约一周了。

我不完全确定问题是什么,但我认为这可能是因为我同时拥有 rvm 和 rbenv。

我在这里遵循了 gorails 的升级教程:https ://gorails.com/setup/osx/12-monterey

但每当我跑步时:

$ rbenv install 3.0.3

我收到以下错误:

In file included from compile.c:40:
./vm_callinfo.h:217:16: error: use of undeclared identifier 'RUBY_FUNCTION_NAME_STRING'
    if (debug) rp(ci);
               ^
./internal.h:95:72: note: expanded from macro 'rp'
#define rp(obj) rb_obj_info_dump_loc((VALUE)(obj), __FILE__, __LINE__, RUBY_FUNCTION_NAME_STRING)
Run Code Online (Sandbox Code Playgroud)

这也是我的错误日志的一个例子:

In file included from compile.c:40:
./vm_callinfo.h:217:16: error: use of undeclared identifier 'RUBY_FUNCTION_NAME_STRING'
    if (debug) rp(ci);
               ^
./internal.h:95:72: note: expanded from macro 'rp'
#define rp(obj) rb_obj_info_dump_loc((VALUE)(obj), __FILE__, __LINE__, RUBY_FUNCTION_NAME_STRING)
                                                                       ^
2 errors generated. …
Run Code Online (Sandbox Code Playgroud)

ruby development-environment rbenv ruby-upgrade ruby-3

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

既然对话操作将被删除,如何开发与智能设备(Google Nest 设备)配合使用的 Google 语音应用程序?

我目前正在开发一个语音应用程序的更新版本,该应用程序之前是使用Google Actions 控制台作为对话应用程序开发的。然而,当开始为此更新的应用程序创建新项目时,一条横幅显示会话应用程序将于 6 月 13 日停用。

阅读文档后,我不清楚现在如何开发,因为将来将不再提供此选项。在这些选项中,App ActionsDialogflow CX可能是开发途径。然而,我要开发的应用程序需要与Google Nest Hub和Google Nest Mini等智能设备集成进行交互。

看来应用程序操作可能不是解决方案,因为它为现有的 Android 应用程序添加了语音功能,我不确定它是否可以直接与智能设备配合使用。

另一方面,Dialogflow CX 看起来专注于聊天框,即基于文本。同样,我不确定使用 Dialogflow CX 是否能够提供在智能设备中使用语音交互的应用程序。

除了这些选项之外,我还阅读了有关 Dialogflow ES、Cloud-to-Cloud for smart for Google HomeContent ActionsMedia Actions 的内容。看起来这些解决方案都不能替代 Google Actions。例如,我认为智能家居不是一个选择,因为我不希望与谷歌 Nest Hub 之外的家庭设备进行交互。

我希望任何人都可以帮助我理解发展道路或引导我找到我可能缺少的信息。谢谢

voice development-environment actions-on-google google-assistant

5
推荐指数
0
解决办法
283
查看次数

什么是最有趣和创新的IDE?

由于每个程序员都知道工具很重要,因此开发人员没有比用于编码的IDE更重要的工具.在过去几年中,IDE已经达到了标准,在这一领域看到创新并不常见.您可以推荐哪些IDE作为创新,以及它们引入了哪些新的想法和范例?

ide development-environment

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

IDE条件块突出显示

建立:

想象一下,我有一个相当不错的大小程序,并且正在使用#defines和各种包含/排除各种代码的方法.

IE假设我有一段这样的代码

example_file.c:

include <definition_file>

#ifdef THIS
  do something really cool here
#ifdef THAT
  do something even cooler
#endif
#endif
Run Code Online (Sandbox Code Playgroud)

definition_file.c:

#define THAT TRUE
#define THIS FALSE
Run Code Online (Sandbox Code Playgroud)

现在我不知道除非我查看定义,否则不会包含或使用任何声明.以上是一个简单的例子,但假设你说50个ifdef并且它们以不同的方式嵌套,追踪50个值中的每一个都是一个痛苦的屁股.

题:

是否存在程序/环境,例如灰显或突出显示整段代码,表明基于您的"控制文件",它们将不被包含或将被包括在内.(某种视觉或其他指示)

注意:如果有人可以通过各种方式改进名称或问题,我真的不知道该怎么称呼它.(或建议更好的标签)

c c# c++ ide development-environment

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

开发需要的条件图配置

我们现在使用docker容器进行开发和deplyoment一段时间,它就像一个魅力.直到现在两个配置都是相同的,并且使用顶部无花果,开发人员的生活也变得更加容易.

当我们在节点开发中越来越多地使用它时,我们现在需要在开发(检查器,配置文件等)时使用一些额外的工具,这些工具在生产容器中显然是不需要的.再次捕获node-inspector:它需要公开一个端口以连接到浏览器,以便自己查看该工具.

这里是brieffly我们的fig.yml文件:

indexer:
  build: .
  volumes:
   - .:/src
  links:
   - db
   - amqp
   - search
amqp:
  ports:
   - "5672:5672"
   - "15672:15672"
  image: mikaelhg/docker-rabbitmq
db:
  ports:
   - "3306:3306"
  image: tutum/mysql:5.6
search:
  ports:
   - "9002:9002"
   - "9300:9300"
  image: dockerfile/elasticsearch
Run Code Online (Sandbox Code Playgroud)

"Indexer"是我们的app容器,可以多次推出,将其配置更改为:

indexer:
  ports:
    - "8080:8080"
  build: .
  volumes:
   - .:/src
  links:
   - db
   - amqp
   - search
Run Code Online (Sandbox Code Playgroud)

掩盖了一个小问题:当我们发射其中许多时,映射的端口显然成为问题,并且实际上没有检查员可用.

我的第一个getto解决方案就是创建一个新的"indexer-dev"容器来启动它只是为了调试目的,但它不足以因为我们fig up在shell上运行方便只是为了把所有东西都搞定,然后另一个fig run indexer dev bash在另一个用于我们的调试目的.所以我现在正在做的只是fig up随后手动启动带有neede转发端口的容器:docker run -i -t -p 8080:8080 indexer:latest

以更自动的方式进行此操作的最佳方式是什么?比如开发人员可以通过无花果继续发布容器并选择可能或可能没有导出端口的实例?

谢谢你的任何建议.

欢呼卢西奥

development-environment node.js node-inspector docker fig

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