小编Nat*_*ong的帖子

为什么Rails以UTC格式存储时间?

通常,Rails会以UTC时间在数据库中存储所有时间.如果将时区设置为其他区域,则在保存到数据库或从中检索时,它会在该区域和UTC之间自动转换.

这种方法有哪些优点?有什么缺点吗?有没有办法让Rails使用不同的时区?

认为一些优点可能是:

  • UTC消除了季节性时间变化的模糊性
  • 您可以向不同用户显示不同的时区,同时保持数据库中的一致性

我能想到的唯一缺点是,对于所有用户实际位于同一时区的内部应用程序,这种差异使得根据本地时间运行原始SQL查询变得更加困难.

ruby-on-rails ruby-on-rails-3

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

如何让Rails为PDFKit呈现PDF特定的HTML?

我正在使用PDFKit中间件来呈现PDF.这是它的作用:

  • 检查传入的应用程序请求.如果它们用于PDF,请从应用程序中隐藏该事实,但准备修改响应.
  • 让应用呈现为HTML
  • 在发送之前获取响应并将HTML转换为PDF

一般来说,我想要那种行为.但我有一个案例,我实际上需要我的应用程序根据请求PDF的事实呈现不同的内容.

PDFKit为我提供了一个标记来检测它是否计划呈现我的响应:它设置env["Rack-Middleware-PDFKit"]为true.

但我需要告诉Rails,基于该标志,我希望它呈现show.pdf.haml.我怎样才能做到这一点?

rendering ruby-on-rails ruby-on-rails-3

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

为什么Capybara无法看到此页面的内容?

我正在尝试使用Capybara编写Rspec请求规范.似乎一切都正常,除了 Capybara将页面视为空白.

好迹象:

  • 页面在浏览器中加载正常
  • 拖尾日志表明在测试运行期间呈现了正确的视图
  • 我执行了在视图中放置的任何日志记录语句
  • 如果我使用assert_select "h1", :text => "hello world",测试通过.

不好的迹象:

  • 如果我使用page.should have_content('hello world'),它会失败,说Capybara::ElementNotFound: Unable to find xpath "/html"
  • 如果我这样做$stdout.puts page.html,除了doctype之外它是空的

我的测试看起来像这样:

describe "working with foos" do
  it "should have a 'new foo' form" do
    get '/foos/new'
    assert_select 'h1', text: 'hello world' # passes
    page.should have_content('hello world') # fails
    $stdout.puts page.html                  # empty except for a doctype
  end
end
Run Code Online (Sandbox Code Playgroud)

这可能有什么问题?

rspec ruby-on-rails capybara

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

为什么这会溢出堆栈而不是使用尾递归?

我在Clojure中定义了以下函数.

; return the input unchanged
(defn same [x] x)

; Recursively call the function on the input N times
(defn recurse-n-times [input function n]
  (if (= n 0)
    input
    (recurse-n-times (function input) function (- n 1))
  )
)
Run Code Online (Sandbox Code Playgroud)

以下是我的递归函数的一些输出:

(recurse-n-times 0 inc 5)     ; returns 5, as expected
(recurse-n-times 0 same 5)    ; returns 0, as expected
(recurse-n-times 0 same 5000) ; StackOverflowError:
                              ; clojure.lang.Numbers$LongOps.combine
                              ; (Numbers.java:394)
Run Code Online (Sandbox Code Playgroud)

我不明白为什么我得到了StackOverflowError.最后一件事recurse-n-times是调用自己,所以我希望它使用尾递归而不是增长堆栈.

想到这个替换定义给出StackOverflowError:

(defn bad-recurse-n-times …
Run Code Online (Sandbox Code Playgroud)

clojure

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

BEAM(Erlang VM)是否并行进行垃圾收集?

我正在学习Elixir,并希望确定我理解垃圾收集在Erlang VM中是如何工作的.

我的理解是这样的:

  • 每个VM级进程都有自己的堆
  • 如果该堆在它终止之前没有填满,那么它将被丢弃,并且不需要GC
  • 填充的堆是单独,并行收集的垃圾,因此GC不会"停止世界",只是一个过程

它是否正确?

erlang garbage-collection elixir

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

如何跳过特定Rspec标签的某些设置?

Rspec可以根据测试标签的存在轻松配置设置.例如,如果某些测试需要创建并行Universe(假设您有代码来执行此操作):

# some_spec.rb
describe "in a parallel universe", alter_spacetime: true do
  # whatever
end

# spec_helper.rb
RSpec.configure do |config|
  config.before(:each, :alter_spacetime) do |example|
    # fancy magic here
  end
end
Run Code Online (Sandbox Code Playgroud)

但我想做相反的事情:"在每次测试之前,除非你看到这个标签,否则执行以下操作......"

如何spec_helper根据某些测试中是否存在标记跳过设置步骤?

ruby rspec

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

如何指定函数采用HashMap?

如何将非基本类型指定为Rust函数参数 - 具体来说,是HashMap?例如:

use std::collections::HashMap;

// a main function that would call fibbonacci...

// Here the hashmap would be used for memoizing;
// maybe ugly, but it's a first attempt
fn fibbonacci(n: i32, cache: ??) -> i32 {
}
Run Code Online (Sandbox Code Playgroud)

我试过了:

  • cache: Hashmap => wrong number of type arguments: expected at least 2, found 0
  • cache: <HashMap> => error: expected ::, found )
  • cache: std::collections::HashMap => wrong number of type arguments: expected at least 2, found 0

狗在电脑键盘上伸出一条领带和舌头伸出的舌头 -

这是Rust 1.0.0.beta.

rust

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

什么`Vec <T>`是什么意思?

Rust Book有时会说"我们想要的东西Vec<T>".

除了"Vector类型的东西吗?"之外,这是否意味着什么?另外,你会怎么发音 - "vec tee"?

rust

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

Elixir是否支持内省以显示可用功能?

请考虑编程凤凰城的这个片段:

defmodule Rumbl.VideoController do
  use Rumbl.Web, :controller

  def index(conn, _params) do
    videos = Repo.all(Video)
    render(conn, "index.html", videos: videos)
  end

end
Run Code Online (Sandbox Code Playgroud)

index使用render由触发的导入获得的函数use Rumbl.Web, :controller.

我知道还导入了其他功能.但Elixir是否提供了列出它们的方法?

我可以列出Elixir中当前范围的可用功能吗?

elixir

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

为什么HTTPS页面请求比HTTP更快?

本文提到并且此站点似乎旨在表明 HTTPS可以比HTTP更快.我很惊讶; 我认为HTTPS只是HTTP加密,这增加了一小部分,可能是可以忽略不计的工作,但不会删除任何.

为什么HTTPS页面加载速度比HTTP速度快?

performance https http

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