我有这个问题:
Client.select("name as dname")
Run Code Online (Sandbox Code Playgroud)
哪个工作正常.
Client.select("name as dname").first.dname
=> "Google"
Run Code Online (Sandbox Code Playgroud)
现在我想将所有dnames作为数组,但是pluck方法不起作用,因为dname不是列名.
2.2.5 :040 > Client.select("name as dname").pluck(:dname)
(0.6ms) SELECT dname FROM "clients"
ActiveRecord::StatementInvalid: PG::UndefinedColumn: ERROR: column "dname" does not exist
Run Code Online (Sandbox Code Playgroud)
如何获取dnames数组?是否有像pluck这样的方法可以使用as定义的列名别名.
我可以做这个
Client.select("name as dname").map{|d| d.dname}
Run Code Online (Sandbox Code Playgroud)
但循环遍历每条记录对我来说没有任何意义
每次执行测试时,都会收到以下弃用警告:
DEPRECATION WARNING: alias_method_chain is deprecated. Please, use Module#prepend instead. From module, you can access the original method using super. (called from <top (required)> at /Users/johnvanarkelen/Documents/Web development/rails/test-eagle/config/environment.rb:5)
DEPRECATION WARNING: alias_method_chain is deprecated. Please, use Module#prepend instead. From module, you can access the original method using super. (called from <top (required)> at /Users/johnvanarkelen/Documents/Web development/rails/test-eagle/config/environment.rb:5)
DEPRECATION WARNING: after_filter is deprecated and will be removed in Rails 5.1. Use after_action instead. (called from <top (required)> at /Users/johnvanarkelen/Documents/Web development/rails/test-eagle/config/environment.rb:5)
Run Code Online (Sandbox Code Playgroud)
当我检查第 5 行时config/environment.rb,有以下代码: …
我在远程起源有以下分支.
ft_d_feature_abc
ft_d_feature_xyz
ft_d_feature_lam
ft_d_feature_ton
ft_m_feature_mak
ft_m_feature_echo
ft_m_feature_laa
ft_m_feature_pol
Run Code Online (Sandbox Code Playgroud)
我想要获取以ft_d.开头的分支.我怎样才能实现这一目标git fetch?我的Git版本是1.7.9.5.
我最近将Ruby升级到2.5.0.从那以后,我无法正确运行Rails控制台.它要么无限期挂起,要么在几秒钟后向我显示此错误:
before_session hook failed: NoMethodError: undefined method `reject!' for nil:NilClass
完整错误:
Running via Spring preloader in process 6102
Loading development environment (Rails 5.1.4)
before_session hook failed: NoMethodError: undefined method `reject!' for nil:NilClass
Traceback (most recent call last):
/Users/zoro/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/spring-2.0.2/lib/spring/application.rb:171:in `fork': undefined method `reject!' for nil:NilClass (NoMethodError)
Run Code Online (Sandbox Code Playgroud)
如果我DISABLE_SPRING,我可以按预期启动我的控制台.但是,(不确定这是否相关,如果不是 - 我可以单独解决)如果发生任何错误,控制台"崩溃"并将我踢回终端:
?rails console
Loading development environment (Rails 5.1.4)
[1] pry(main)> a
Traceback (most recent call last):
bin/rails: undefined method `[]' for nil:NilClass (NoMethodError)
?
Run Code Online (Sandbox Code Playgroud)
任何有关这方面的帮助将不胜感激.使用rbenv来管理Rubies,并且在其他版本的Ruby上没有此错误.
我有我认为是通过发送电子邮件的工作设置Delayed_Job.但是,我还没有收到我的测试电子邮件,等待更多的事情发生延迟几天是不切实际的.我需要弄明白:
我是Delayed_Job新手,所以原谅新手的错误.
这是包含该send_reminder_emails方法的模型.它们完全没有功能.delay(run_at: self.mail_date),所以至少我知道它有多大功能:
class Reminder < ActiveRecord::Base
belongs_to :user
before_save :create_mail_date
after_save :send_reminder_emails
extend FriendlyId
friendly_id :name, use: [:slugged, :finders]
def create_mail_date
@schedule = IceCube::Schedule.new(self.date)
case self.repeating
when "Weekly"
@schedule.add_recurrence_rule(
IceCube::Rule.weekly
)
when "Monthly"
@schedule.add_recurrence_rule(
IceCube::Rule.monthly.day_of_month(self.date.mon)
)
when "Yearly"
@schedule.add_recurrence_rule(
IceCube::Rule.yearly.day_of_year(self.date.yday)
)
end
if self.repeating
self.date = @schedule.next_occurrence(Time.now)
end
self.mail_date = self.date - 7.days
end
private
def send_reminder_emails
if self.reminder
ReminderMailer.delay(run_at: self.mail_date).reminder_send(self.user, self).deliver_now
self.create_mail_date
end
end
handle_asynchronously :send_reminder_emails
end …Run Code Online (Sandbox Code Playgroud) 在 heroku postgres 计划页面https://elements.heroku.com/addons/heroku-postgresql 上,提到业余计划有 0 字节的 RAM。这是否意味着 Postgres 在没有 RAM 的情况下工作?
我正在创建复制槽,并通过 JDBC 驱动程序将更改从 AWS Postgres RDS 流式传输到 java 进程。
我的复制槽创建代码如下所示。
final ReplicationSlotInfo replicationSlotInfo = pgConnection.getReplicationAPI()
.createReplicationSlot()
.logical()
.withSlotName(replicationSlotName)
.withOutputPlugin("wal2json")
.make();
Run Code Online (Sandbox Code Playgroud)
我使用以下代码获得复制流。
pgConnection.getReplicationAPI()
.replicationStream()
.logical()
.withSlotName(replicationSlotName)
.withSlotOption("include-xids", true)
.withSlotOption("include-timestamp", true)
.withSlotOption("pretty-print", false)
.withSlotOption("add-tables", "public.users")
.withStatusInterval(10, TimeUnit.SECONDS)
.start()
Run Code Online (Sandbox Code Playgroud)
当复制器 java 进程未运行时,WAL 大小会增加。这是我用来查找复制滞后的查询。
SELECT
slot_name,
pg_size_pretty(pg_xlog_location_diff(pg_current_xlog_location(), restart_lsn)) AS replicationSlotLag,
active
FROM
pg_replication_slots;
Run Code Online (Sandbox Code Playgroud)
输出:
slot_name replicationslotlag active
data_stream_slot 100 GB f
Run Code Online (Sandbox Code Playgroud)
这种复制延迟会超过 RDS 磁盘,从而导致 RDS 关闭。
我以为wal_keep_segments会处理这个问题,它被设置为 32。但它不起作用。即使 Java 复制进程未运行,我是否还必须设置任何其他属性来避免这种情况。
我正在尝试根据某些请求标头在特使代理上设置 RING_HASH 负载平衡。从文档看来我必须在中设置哈希键filter_metadata
filter_metadata:
envoy.lb:
hash_key: "YOUR HASH KEY"
Run Code Online (Sandbox Code Playgroud)
但是,我无法找出 hash_key 的可能值/表达式是什么。我尝试为哈希键配置固定值,但请求仍然不会发送到同一上游服务器。
我的envoy.yaml
admin:
address:
socket_address: { address: 0.0.0.0, port_value: 9901 }
static_resources:
listeners:
- name: listener_0
address:
socket_address: { address: 0.0.0.0, port_value: 10000 }
filter_chains:
- filters:
- name: envoy.filters.network.http_connection_manager
typed_config:
"@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager
stat_prefix: ingress_http
codec_type: AUTO
route_config:
name: local_route
virtual_hosts:
- name: local_service
domains: ["*"]
routes:
- match: { prefix: "/" }
route: { cluster: some_service }
http_filters:
- name: envoy.filters.http.router
clusters:
- name: …Run Code Online (Sandbox Code Playgroud) postgresql ×3
actionmailer ×1
activerecord ×1
delayed-job ×1
envoyproxy ×1
git ×1
git-branch ×1
git-fetch ×1
heroku ×1
jdbc ×1
rails-spring ×1
replication ×1
ruby ×1
sql ×1