小编Dan*_*nyB的帖子

如何使用苗条的邮件文本模板

我使用slim作为我的rails应用程序的模板引擎,并且也希望使用slim作为邮件模板.

html邮件程序模板(views/mailer/default_email.en.html.slim)没有问题但是,我不知道如何使文本模板工作.

我在views/mailer/default_email.en.text.slim中放置了一个文本模板,其中包含以下内容:

Hello,

Your video is ready.
= @url

Thank you,
The A-Team
Run Code Online (Sandbox Code Playgroud)

但结果被解析为纤薄的HTML,看起来像这样:

<Hello>,</Hello><Your>video is ready.</Your><Click>the link below to watch it:</Click>http://watch.thy/video<Thank>you,</Thank><The>A-Team</The>
Run Code Online (Sandbox Code Playgroud)

除了为每一行添加一个管道前,还有更自然的方法吗?我甚至寻找一个嵌入式插件(如降价标记)来说"纯文本",但没有.

提前致谢.

templates ruby-on-rails slim-lang

7
推荐指数
2
解决办法
2098
查看次数

YAML中隐藏的可重用块

我正在尝试以docker-compose.yml某种方式定义文件中的可重用块,以使可重用块定义本身不包含在最终(评估的)YAML中。

我知道如何使用以下语法定义可重用的块:

services:
  default: &default
    image: some/image

  dashboard:
    <<: *default
    command: run dashboard
    ports: ["3000:3000"]
Run Code Online (Sandbox Code Playgroud)

但是,上面也创建了一个以default服务命名的条目,我想避免这种情况。换句话说,我需要最终的YAML结果仅包括dashboard在该services属性下。

YAML有可能吗?我找不到足够清晰地讨论该结构的参考资料。

凭直觉,我尝试了下面的一些变体,但它也没有用。

services:
  &default:
    image: some/image

  dashboard:
    <<: *default
    command: run dashboard
    ports: ["3000:3000"]
Run Code Online (Sandbox Code Playgroud)

yaml docker-compose

7
推荐指数
2
解决办法
1296
查看次数

Swagger UI 参数作为列表而不是文本输入

我试图弄清楚如何使 Swagger UI 显示允许值列表而不是输入字段。

到目前为止,我对 Swagger 的不同版本和文档感到非常困惑。我不确定哪个是哪个(1.2、2.0、YAML、JSON...)

到目前为止,这是我所知道的:

  1. 有一些命令被调用allowableValues,但据我了解,它在 Swagger 2.0 中不可用
  2. 我找到了该enum命令,但无法让它为我工作。
  3. 我不确定是否应该在parameters部分 或definitions部分中定义此允许值列表
  4. 我发现petstore 示例确实有一个像我想要的选择字段 (GET /pet/findByTags),但据我在“原始”JSON 中看到的,它看起来像旧的 Swagger 格式。

最后,这是我在Swagger 编辑器中尝试的代码:

swagger: '2.0'
host: asd.com
schemes:
  - http
info:
  version: "1.0.0"
  title: test

paths:
  /users:
    get:
      parameters:
        - name: status
          in: query
          type: string
          enum:
            - online
            - offline

      responses:
        "200":
          description: Nice
Run Code Online (Sandbox Code Playgroud)

swagger swagger-ui

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

为什么在清理中删除了"tel:"链接,以及如何允许它们

我正在使用Rails sanitize帮助程序来清理用户的输入文本,这些文本可能被格式化为markdown.

我注意到该方法剥离tel:链接,我想知道为什么,我怎么能允许它们.

>> sanitize("<a href='http://123'>click</a>")
=> "<a href=\"http://123\">click</a>"
>> sanitize("<a href='tel:123'>click</a>")
=> "<a>click</a>"
Run Code Online (Sandbox Code Playgroud)

当然,我已经尝试从上面链接的页面中找出它,但是无法做到.我宁愿避免为这个简单的任务编写"scrubber"类或任何其他类.

我也尝试了我认为意味着"允许所有hrefs",但它没有任何效果(即使重新启动服务器后).

# In config/application.rb
config.action_view.sanitized_allowed_attributes = ['href']
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails ruby-on-rails-4

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

GitHub Actions:如何在容器内运行测试

我想在容器内运行 django 测试用例。我可以从 docker hub 拉取私有镜像。但是当我运行命令进行测试时,它无法运行。

任何人都尝试在容器内运行测试用例。

jobs:
test:
container:
  image: abcd
  credentials:
    username: "<username>"
    password: "<password>"

steps:
  - uses: actions/checkout@v2
  - name: Display Python version
    run: |
      python -m pip install --upgrade pip
      pip install -r requirements/dev.txt
  - name: run test
    run: |
      python3 manage.py test
   
Run Code Online (Sandbox Code Playgroud)

docker github-actions github-actions-services

3
推荐指数
1
解决办法
4172
查看次数

在 Psych 4 中使用 YAML/Store 加载不安全的 YAML

Ruby 的 YAML 库 (Psych 4) 的最新更改会导致“不安全”YAML 在包含别名或尝试实例化未指定的类时失败。这在多个地方都有讨论,例如StackOverflow 问题

我试图弄清楚如何告诉衍生yaml/store库允许加载不安全的 YAML,或者向它提供允许的类列表。

据我所知,该文档很少,阅读后,这是我能想到的唯一合乎逻辑的尝试:

require 'date'
require 'yaml/store'

# 1. These options work perfectly with YAML.load_file, but not with YAML::Store
# 2. These options are not needed in Psych < 4.0
yaml_opts = { aliases: true, permitted_classes: [Time, Date, Symbol] }

store = YAML::Store.new 'log.yml', yaml_opts
data = store.transaction { store[:entries] }
p data
Run Code Online (Sandbox Code Playgroud)

使用此 YAML 文件:

# log.yml
:entries:
- :timestamp: 2018-07-09 00:00:00.000000000 +03:00
  :action: Comment
  :comment: …
Run Code Online (Sandbox Code Playgroud)

ruby yaml

3
推荐指数
1
解决办法
3393
查看次数

Go:扩展未命名的类型,例如[] string

关于Go中的类型别名,我有点困惑.

我已经阅读了这个相关的SO问题 - 为什么我可以输入别名函数并在不进行转换的情况下使用它们 .

据我所知,如果底层结构相同,未命名和命名变量可以相互分配.

我想弄清楚的是,我可以通过命名它们来扩展未命名的类型 - 类似这样:

type Stack []string

func (s *Stack) Print() {
    for _, a := range s {
        fmt.Println(a)
    }
}
Run Code Online (Sandbox Code Playgroud)

这给了我错误cannot range over s (type *Stack)
尝试投射它[]string,没有去.

我知道下面的代码是有效的 - 这是我应该这样做的吗?如果是这样,我很想知道为什么以上不起作用,以及如何使用声明type Name []string.

type Stack struct {
    data []string
}

func (s *Stack) Print() {
    for _, a := range s.data {
        fmt.Println(a)
    }
}
Run Code Online (Sandbox Code Playgroud)

go

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

编组时忽略JSON标记

我从外部源获取JSON数据.这个JSON中的字段名称不是我想带的东西,所以我将它们转换为使用json:"originalname"标签对我有意义的名称.

当我将这样的对象编组回JSON时,我自然会再次获得丑陋的(原始)名称.

编组时是否有办法忽略标签?或者为马歇尔和unmarshall指定不同名称的方法?

为了澄清,我在操场上准备了一个例子,并在下面粘贴了相同的代码.

提前致谢.

package main

import (
    "encoding/json"
    "fmt"
)

type Band struct {
    Name   string `json:"bandname"`
    Albums int    `json:"albumcount"`
}

func main() {
    // JSON -> Object
    data := []byte(`{"bandname": "AC/DC","albumcount": 10}`)
    band := &Band{}
    json.Unmarshal(data, band)

    // Object -> JSON
    str, _ := json.Marshal(band)
    fmt.Println("Actual Result: ", string(str))
    fmt.Println("Desired Result:", `{"Name": "AC/DC","Albums": 10}`)

    // Output:
    // Actual Result:  {"bandname":"AC/DC","albumcount":10}
    // Desired Result: {"Name": "AC/DC","Albums": 10}
}
Run Code Online (Sandbox Code Playgroud)

json go

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

如何使用 env_file 在 docker-compose 中隐藏 Mysql 密码

version: '3'

services:
  db:
    image: "mysql:5.7"
    volumes:
      - data-mysql:/var/lib/mysql

    ports:
      - '3306:3306'

    environment:
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}

volumes:
  data-mysql:
    driver: local
Run Code Online (Sandbox Code Playgroud)

谢谢曼尼

mysql docker docker-compose

0
推荐指数
1
解决办法
1787
查看次数