我一直在将 ssh-agent 转发到 docker 容器(使用我的 docker-compose 安装)时遇到了严重的麻烦。我有运行 Catalina 的 Mac,使用 docker-engine 19.03.8 和 Compose @ 1.24。以下是我的 docker-compose 文件:
version: '3.7'
services:
platform:
build:
context: .
dockerfile: ./platform/compose/Dockerfile.platform.local
working_dir: /root/platform
ports:
- "3000:3000"
command: ["./compose/scripts/start_rails.sh"]
tty: true
stdin_open: true
volumes:
- type: bind
source: /run/host-services/ssh-auth.sock
target: /run/host-services/ssh-auth.sock
env_file: ./platform/.env
environment:
TERM: xterm-256color
SSH_AUTH_SOCK: /run/host-services/ssh-auth.sock
volumes:
Run Code Online (Sandbox Code Playgroud)
我配置 ssh-agent 转发的方式在docker-compose 文档中指定
该./compose/scripts/start_rails.sh脚本确实bundle install && bundle exec rails s。我从私有存储库中提取的 gem 很少,我认为我应该能够通过转发 ssh-agent 来安装这些 gem。
我还尝试在旋转 docker-compose 之前启动 ssh-agent,但这似乎没有任何作用。 …
请考虑以下代码片段:
def sql
billing_requests
.project(billing_requests[Arel.star])
.where(
filter_by_day
.and(filter_by_merchant)
.and(filter_by_operator_name)
)
.to_sql
end
def filter_by_day
billing_requests[:created_at].gteq(@start_date).and(
billing_requests[:created_at].lteq(@end_date)
)
end
def filter_by_operator_name
unless @operator_name.blank?
return billing_requests[:operator_name].eq(@operator_name)
end
end
def filter_by_merchant
unless @merchant_id.blank?
return billing_requests[:merchant_id].eq(@merchant_id)
end
end
private
def billing_requests
@table ||= Arel::Table.new(:billing_requests)
end
Run Code Online (Sandbox Code Playgroud)
在filter_by_merchant商家ID变空的方法中,Arel必须返回的值才能忽略AND子句效果?还有,有更好的方法来处理这种情况吗?
我有以下模型:
Shipment:
reference_numbers: [] :json field
Run Code Online (Sandbox Code Playgroud)
参考字段一般结构如下:
[{'reference_field_name': 'freight_number', 'reference_field_value': '0098'}, {'reference_field_name': 'bill_of_lading', 'reference_field_value': '1190' }]
Run Code Online (Sandbox Code Playgroud)
此处的字段名称可能因交付而异。它可以是任何东西,而不仅仅是 bill_of_lading 和 cargo_number。
在货件中的 reference_numbers 中查找“reference_field_name”的所有唯一值的最佳方法是什么?
嗨,我正在尝试创建一个帮助程序,用于将ruby方法定义为私有类方法.通常,可以使用private_class_method键工作将方法定义为私有类方法.但我想以下列风格创建一个帮助器:
class Person
define_private_class_methods do
def method_one
end
def method_two
end
end
end
Run Code Online (Sandbox Code Playgroud)
我计划动态定义它的方式是以下方式,它根本不起作用:
class Object
def self.define_private_class_methods &block
instance_eval do
private
&block
end
end
end
Run Code Online (Sandbox Code Playgroud)
我可能会出错的任何想法?
我试图用ruby获得字符串的第一个字母.以下是我写的.
puts "world is a better place".split.collect{|w| w[0].capitalize}.join()
Run Code Online (Sandbox Code Playgroud)
是否有更简洁的方法来产生相同的结果?
是否可以一次锁定多行以防止更新PostgreSQL中的行?我经过了官方锁,可以找到在表级别和行级别有效的锁,但是在多行上却没有。
有可能在postgresql中这样做吗?
如何在分隔符/多个分隔符之间获得子串?例如:
sample_string = "00990099"
some_method(sample_string, "9")
=> ["00"]
sample_string = "00XXX00XX0X00X00"
some_method(sample_string, "X")
=> ["00", "0", "00"]
Run Code Online (Sandbox Code Playgroud)
我尝试使用split,但是有一个优雅的解决方案吗?
概括:
Ubuntu 18.04 LTS;导轨 6.0.2.1;红宝石 2.7.0;
“rails new myapp”创建 GemFile、.gitignore 等,但不创建 app 文件夹
我已经在云开发环境(Cloud9)上成功使用Rails(5.1.6),但是想搭建一个本地开发环境。
我安装了 Ubuntu 18.04 LTS。然后我按照在线资源指导我安装 RVM、Ruby 和 Rails 本身。一切似乎都安装正确(如下面的版本检查所示)。
在运行命令时,rails new myapp我希望找到完整的 Rails 文件夹和创建的文件,但只找到了下面显示的 6 个文件。为什么没有创建带有关联文件的 app 文件夹?
(我在 Rails 5.2.0 和 Ruby 2.5.1 上重复了这个并遇到了同样的问题)
simbed@simbed-ThinkPad-T410:~$ ruby -v
ruby 2.7.0p0 (2019-12-25 revision 647ee6f091) [x86_64-linux]
simbed@simbed-ThinkPad-T410:~$ rails -v
Rails 6.0.2.1
simbed@simbed-ThinkPad-T410:~$ sqlite3 --version
3.22.0 2018-01-22 18:45:57 0c55d179733b46d8d0ba4d88e01a25e10677046ee3da1d5b1581e86726f2alt1
simbed@simbed-ThinkPad-T410:~$ yarn -v
1.21.1
simbed@simbed-ThinkPad-T410:~$ cd environment
simbed@simbed-ThinkPad-T410:~/environment$ rails new myapp
create
create README.md
create Rakefile
create .ruby-version
create …Run Code Online (Sandbox Code Playgroud) ruby ×5
activerecord ×2
postgresql ×2
sql ×2
arel ×1
docker ×1
json ×1
locking ×1
moby ×1
regex ×1
ssh-agent ×1
string ×1
ubuntu-18.04 ×1