小编Bra*_*don的帖子

奇怪的流浪/ SSH连接行为

我在一些当地的流浪汉VM上运行一些Capistrano和Chef任务.我可以通常从命令行SSH到这些框.

当我尝试运行一些Capistrano任务时,我将在一次运行Cap任务时遇到以下错误:

connection failed for: 192.168.0.220 (Errno::ECONNRESET: Connection reset by peer)
Run Code Online (Sandbox Code Playgroud)

它偶尔会失败第二次.但是当我再次运行它时,它的工作原理!这种行为对我没有任何意义,我对如何进行故障排除没有任何想法.

您可以提供的任何帮助将不胜感激!

connection ssh capistrano chef-infra vagrant

6
推荐指数
1
解决办法
624
查看次数

如何避免ActiveModel Serializers中的多个SQL调用?

我发现当我使用ActiveModel Serializers为一组包含关联的模型生成JSON时,会导致大量的SQL查询(每个关联一个).我怎么能避免这个?

我试过在控制器中做一个include:

render json: Project.includes(tasks: [:workers])
Run Code Online (Sandbox Code Playgroud)

但这似乎不起作用.即使我将关系(包含)直接传递给ArraySerializer,它也无济于事.

serialization json ruby-on-rails active-model-serializers

6
推荐指数
1
解决办法
963
查看次数

使用Spork重新定义常量

我正在使用以下技巧(来自http://mikbe.tk/2011/02/10/blazingly-fast-tests/)来确保模型在使用Spork的每个RSpec运行时重新加载:

Spork.each_run do
  load "#{Rails.root}/config/routes.rb"
  Dir["#{Rails.root}/app/**/*.rb"].each { |f| load f }
  # .....
end
Run Code Online (Sandbox Code Playgroud)

但是,每次运行测试时都会出现以下警告:

/myproject/app/models/model.rb:36: warning: already initialized constant CONFIGURABLE

我可以通过以下方式避免:

if !defined?(A_CONSTANT)

在每个常数之后,这看起来并不正确(但它确实有效).有关如何使其正常工作的任何建议?(即我的模型仍将在测试中重新加载,但我不必将if每个常量定义放在后面.)

rspec ruby-on-rails constants spork

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

PostgreSQL - 在所有表格(以及将来的表格)中选择Grant,在*所有模式中*

我的数据库使用模式为应用程序分离特定于租户的数据 - 每个客户在注册保存数据时都会创建一个全新的模式.

这显然意味着我不知道所有模式的名称.

我想创建一个readonly所有这些模式具有读访问权的角色,以及将来创建的模式.

我发现这些问题的所有问题都需要知道模式的名称,例如:

-- Create a group
CREATE ROLE readaccess;

-- Grant access to existing tables
GRANT USAGE ON SCHEMA a_given_schema TO readaccess;
GRANT SELECT ON ALL TABLES IN SCHEMA a_given_schema TO readaccess;

-- Grant access to future tables
ALTER DEFAULT PRIVILEGES IN SCHEMA a_given_schema GRANT SELECT ON TABLES TO readaccess;

-- Create user with password
CREATE USER readonly WITH PASSWORD 'a_secret';
GRANT readaccess TO readonly;
Run Code Online (Sandbox Code Playgroud)

有没有办法做这样的事情,但是对于未来的所有模式?

sql postgresql schema

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

如何让Unicorn在开发日志中显示帖子参数?

我刚开始尝试使用Unicorn(超薄),到目前为止,我确实喜欢输出的格式,除了它似乎没有显示各种请求的post参数.我真的很喜欢这个功能来帮助调试表单等....

独角兽:

20:26:14 web.1     | 127.0.0.1 - - [17/Jan/2012 20:26:14] "POST /basic_simulations HTTP/1.1" 422 24259 0.4838
Run Code Online (Sandbox Code Playgroud)

我想要的......(这是来自webrick):

Started POST "/basic_simulations" for 127.0.0.1 at 2012-01-17 20:27:22 -0700
Processing by BasicSimulationsController#create as HTML
Parameters: {"utf8"=>"?",
"authenticity_token"=>"xxxxx", "basic_simulation"=>{"x1706"=>"1"}, "commit"=>"Submit my answers"}
Run Code Online (Sandbox Code Playgroud)

是否有一些配置选项或类似的东西我可以打开此功能?谢谢!

ruby logging webserver ruby-on-rails unicorn

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

与Postgres安全的TCP连接?需要SSL?

早上好,

我正在浏览Postgresql配置文件,最近注意到有一个ssl选项.我想知道什么时候需要这个.

假设您有一个应用服务器和一个数据库服务器 - 不在专用网络内运行.如果用户尝试登录,如果未启用SSL,那么当查找是否为有效的用户名/密码时,应用服务器是否会以明文形式将用户的密码传输到数据库?

这里的标准做法是什么?我应该设置我的数据库使用SSL吗?

如果是这种情况,config/database.yml我的Rails应用程序中的连接设置是否有任何区别?

谢谢!

database security postgresql ssl

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

简单的Clojure澄清re:哈希/值

我刚刚开始使用Clojure,试图将我的大脑包裹在功能/不可变编程中.

我的一个简单的问题是 - 我有一个带有两个值的地图,我想从一个转移到另一个(在同一个地图内).这可以通过简单的功能完成吗?或者我必须进入refs和atoms?

例如

(def bucket {:volume 100 :rate 10 :poured 0})
Run Code Online (Sandbox Code Playgroud)

如何移动volumepouredrate

(defn pour
  [bucket]
  ?
)

; -> {:volume 90 :rate 10 :poured 10}
Run Code Online (Sandbox Code Playgroud)

hash clojure map

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

Rails 3.2 Rack :: Cache HTTP标头和动作缓存

下午好,

我遇到了一些问题,试图将HTTP缓存与Rack :: Cache和动作缓存相结合(在我的Heroku托管的应用程序上).

单独使用它们似乎正在起作用.启用操作缓存后,页面加载很快,日志会建议缓存.通过控制器中的HTTP缓存(eTag,last_modified和fresh_when),似乎设置了正确的标头.

但是,当我尝试将两者结合起来时,它似乎是动作缓存,但HTTP标头总是max_age:0,must_revalidate.为什么是这样?难道我做错了什么?

例如,这是我的"home"动作中的代码:

class StaticPagesController < ApplicationController
  layout 'public'

  caches_action :about, :contact, ......, :home, .....

  ......

  def home
    last_modified = File.mtime("#{Rails.root}/app/views/static_pages/home.html.haml")
    fresh_when last_modified: last_modified , public: true, etag: last_modified
    expires_in 10.seconds, :public => true       
  end
Run Code Online (Sandbox Code Playgroud)

对于所有意图和目的,这应该有一个公共缓存控制标记,max-age 10 no?

$ curl -I http://myapp-staging.herokuapp.com/

HTTP/1.1 200 OK
Cache-Control: max-age=0, private, must-revalidate
Content-Type: text/html; charset=utf-8
Date: Thu, 24 May 2012 06:50:45 GMT
Etag: "997dacac05aa4c73f5a6861c9f5a9db0"
Status: 200 OK
Vary: Accept-Encoding
X-Rack-Cache: stale, invalid
X-Request-Id: 078d86423f234da1ac41b418825618c2
X-Runtime: 0.005902
X-Ua-Compatible: IE=Edge,chrome=1
Connection: …
Run Code Online (Sandbox Code Playgroud)

caching reverse-proxy ruby-on-rails rack-cache

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

如何使用Clojure以功能方式解决这种编程情况?

我有一个编程问题,我知道我可以在Ruby中解决,但不知道Clojure中的最佳方法(并且可能有一种优雅的方式来实现这一功能).

因此可以简化问题:


我有一个装满水的3升水桶.铲斗底部有一个洞,即泄漏10 mL/s(即需要300秒/ 5分钟才能清空).我有一杯100毫升的水,我可以用来将新水倒入桶中.

我只能将玻璃杯的全部内容倒入桶中,不会倾倒.倾倒瞬间发生.

计划出一组时间步骤,我可以将水倒入桶中.


我知道有一种非常明显的方法可以使用代数进行此操作,但实际问题涉及随时间变化的"泄漏率",并且"新玻璃体积"并不总是等于100 mL,因此并不简单以封闭的形式解决.

解决这个问题的Ruby方法是使用"Bucket instance"跟踪桶容量,并在多个时间步骤测试以查看桶是否有100 mL的空间.如果是这样,倾倒玻璃,并添加到"桶实例"中的水.继续时间步骤,观察水桶容积.

我希望我所描述的是清楚的.

algorithm functional-programming clojure

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

Ecto 查询 - 日期 + Postgres 间隔 + 查询插值

我想创建一个 Ecto 查询,children按年龄过滤表中的记录(即“最小年龄(月)-> 最大年龄(月)”)。

一种简单的方法是使用 Ectodate_add功能:

from c in Child, where: c.birthday >
                          datetime_add(^Ecto.DateTime.utc, -1, "month")
Run Code Online (Sandbox Code Playgroud)

问题在于并非所有孩子都在同一时区,当然也不是所有孩子都在Etc/UTC. 此查询将非常接近,但不会准确(有些会在一天内关闭)。

我一直在尝试使用 PostgreSQL 的interval功能来使这个查询工作。我可以使用 SQL 客户端让它工作,但是在尝试插入片段中的值时遇到了插入问题。

这有效(孩子的时区来自其location关联):

query = from ch in Child, 
            join: loc in assoc(ch, :location),
            where: ch.birthday <= fragment("(now() AT TIME ZONE ?)::date - interval '2 months'", loc.time_zone)

Repo.all(query)
Run Code Online (Sandbox Code Playgroud)

请注意,我在'2 months'间隔中进行了硬编码。

我认为这会工作,但确实不是

query = from ch in Child, 
            join: loc in assoc(ch, :location),
            where: ch.birthday <= …
Run Code Online (Sandbox Code Playgroud)

sql postgresql elixir ecto

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