小编bra*_*rad的帖子

Rails.env与RAILS_ENV

我在示例中看到了两个运行中的env的情况.什么是首选?出于所有意图和目的,它们是否相同?

ruby-on-rails

211
推荐指数
3
解决办法
16万
查看次数

javascript函数领先爆炸!句法

我现在已经在一些库上看到了这种语法,我想知道它的好处是什么.(注意我很清楚闭包和代码在做什么,我只关心语法差异)

!function(){
  // do stuff
}();
Run Code Online (Sandbox Code Playgroud)

作为更常见的替代品

(function(){
  // do stuff
})();
Run Code Online (Sandbox Code Playgroud)

用于自我调用匿名函数.

我想知道一些事情.首先,允许顶级示例实际工作的是什么?为了使这个陈述在语法上正确,为什么必要的爆炸?我也被告知+有效,我相信其他一些代替!

第二,有什么好处?我所能说的只是它节省了一个角色,但我无法想象吸引众多采用者会带来如此巨大的好处.我还缺少其他一些好处吗?

我可以看到的唯一其他差异是自调用函数的返回值,但在这两个示例中,我们并不真正关心函数的返回值,因为它仅用于创建闭包.那么有人可以告诉我为什么人们可能会使用第一种语法吗?

javascript syntax

200
推荐指数
6
解决办法
2万
查看次数

jQuery在请求体中发布有效的json

因此,根据jQuery Ajax文档,它在发送请求时以查询字符串的形式序列化数据,但设置processData:false应该允许我在正文中发送实际的JSON.不幸的是,我很难确定第一个,如果发生这种情况,那么第二个对象看起来是什么,它被发送到服务器.我所知道的是服务器没有解析我发送的内容.

使用http客户端发布对象文字时{someKey:'someData'},它可以工作.但是当使用jQuery时data: {someKey:'someData'},它会失败.不幸的是,当我在Safari中分析请求时,它说消息有效负载是[object Object]......很棒......而且在Firefox中帖子是空白的...

在Java端记录正文内容时,它实际上[object Object]是如何发送REAL JSON数据的?

有没有人有过在请求体中序列化JSON数据的Java服务的经验,请求是从jQuery发送的?

BTW这里是完整的$ .ajax请求:

$.ajax({
    contentType: 'application/json',
    data: {
        "command": "on"
    },
    dataType: 'json',
    success: function(data){
        app.log("device control succeeded");
    },
    error: function(){
        app.log("Device control failed");
    },
    processData: false,
    type: 'POST',
    url: '/devices/{device_id}/control'
});
Run Code Online (Sandbox Code Playgroud)

ajax jquery json xmlhttprequest

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

Rails使用块进行部分渲染

我正在尝试重新使用我编写的提供面板样式的html组件.就像是:

  <div class="v-panel">
    <div class="v-panel-tr"></div>
    <h3>Some Title</h3>
    <div class="v-panel-c">
      .. content goes here
    </div>
    <div class="v-panel-b"><div class="v-panel-br"></div><div class="v-panel-bl"></div></div>
  </div>
Run Code Online (Sandbox Code Playgroud)

所以我看到渲染需要一个块.我想我可以这样做:

# /shared/_panel.html.erb
<div class="v-panel">
  <div class="v-panel-tr"></div>
  <h3><%= title %></h3>
  <div class="v-panel-c">
    <%= yield %>
  </div>
  <div class="v-panel-b"><div class="v-panel-br"></div><div class="v-panel-bl"></div></div>
</div>
Run Code Online (Sandbox Code Playgroud)

我想做的事情如下:

#some html view
<%= render :partial => '/shared/panel', :locals =>{:title => "Some Title"} do %>
  <p>Here is some content to be rendered inside the panel</p>
<% end %>
Run Code Online (Sandbox Code Playgroud)

不幸的是,这不适用于此错误:

ActionView::TemplateError (/Users/bradrobertson/Repos/VeloUltralite/source/trunk/app/views/sessions/new.html.erb:1: , unexpected tRPAREN

old_output_buffer = output_buffer;;@output_buffer = ''; …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails render block partial

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

Postgresql截断速度

我们正在使用Postgresql 9.1.4我们的数据库服务器.我一直在努力加快我的测试套件的速度,所以我盯着db稍微分析一下,看看到底发生了什么.我们使用database_cleaner在测试结束时截断表.是的我知道交易更快,我不能在某些情况下使用它们所以我不关心它.

我关心的是,为什么TRUNCATION需要这么长时间(比使用DELETE更长)以及为什么它在我的CI服务器上需要更长时间.

现在,在本地(在Macbook Air上)一个完整的测试套件需要28分钟.拖尾日志,每次我们截断表...即:

TRUNCATE TABLE table1, table2  -- ... etc
Run Code Online (Sandbox Code Playgroud)

执行截断需要1秒多的时间.在我们的CI服务器(Ubuntu 10.04 LTS)上记录日志,需要花费整整8秒才能截断表格,构建需要84分钟.

当我切换到:deletion策略时,我的本地构建花了20分钟,CI服务器下降到44分钟.这是一个显着的差异,我真的很惊讶为什么会这样.我已经调整 CI服务器上数据库,它有16GB系统RAM,4gb shared_buffers ......和一个SSD.所有好东西.这怎么可能:

一个.它比我的Macbook Air慢了2gb
.postgresql文档 明确指出它应该快得多时,TRUNCATION比DELETE慢得多.

有什么想法吗?

postgresql truncate database-performance

62
推荐指数
2
解决办法
3万
查看次数

ActiveRecord Rails 3范围与类方法

我是ActiveRecord新查询界面的新手,所以我还在搞清楚.

我希望有人可以解释scope在ActiveRecord模型中使用a和使用类方法之间的区别(即self.some_method)

从我可以收集的内容来看,范围总是希望返回一个关系,而一个类方法不一定必须.这是真的?

例如,我认为做以下事情是有意义的:

class Person
  scope :grouped_counts, group(:name).count
end
Run Code Online (Sandbox Code Playgroud)

但这不起作用.我收到此错误:

ArgumentError: Unknown key(s): communicating, failed, matched, unmatched
    from /Users/bradrobertson/.rvm/gems/ruby-1.9.2-p180@influitive/gems/activesupport-3.0.5/lib/active_support/core_ext/hash/keys.rb:43:in `assert_valid_keys'
    from /Users/bradrobertson/.rvm/gems/ruby-1.9.2-p180@influitive/gems/activerecord-3.0.5/lib/active_record/relation/spawn_methods.rb:110:in `apply_finder_options'
    from /Users/bradrobertson/.rvm/gems/ruby-1.9.2-p180@influitive/gems/activerecord-3.0.5/lib/active_record/named_scope.rb:110:in `block in scope'
    from (irb):48
    from /Users/bradrobertson/.rvm/gems/ruby-1.9.2-p180@influitive/gems/railties-3.0.5/lib/rails/commands/console.rb:44:in `start'
    from /Users/bradrobertson/.rvm/gems/ruby-1.9.2-p180@influitive/gems/railties-3.0.5/lib/rails/commands/console.rb:8:in `start'
    from /Users/bradrobertson/.rvm/gems/ruby-1.9.2-p180@influitive/gems/railties-3.0.5/lib/rails/commands.rb:23:in `<top (required)>'
    from script/rails:6:in `require'
    from script/rails:6:in `<main>'
r
Run Code Online (Sandbox Code Playgroud)

但它确实可以作为一种类方法

def self.grouped_counts
  group(:name).count
end
Run Code Online (Sandbox Code Playgroud)

我很想知道人们关于何时使用范围以及何时使用类方法的想法.我是否正确假设范围必须始终返回关系,但是类方法可以返回它想要的任何内容?

activerecord class-method scopes ruby-on-rails-3

50
推荐指数
2
解决办法
2万
查看次数

rails覆盖关系的默认getter(belongs_to)

所以我知道如何覆盖ActiveRecord对象的属性的默认getter

def custom_getter
  return self[:custom_getter] || some_default_value
end
Run Code Online (Sandbox Code Playgroud)

我试图实现相同的东西,但属于一个属于协会.例如.

class Foo < AR
  belongs_to :bar

  def bar
    return self[:bar] || Bar.last
  end
end

class Bar < AR
  has_one :foo
end
Run Code Online (Sandbox Code Playgroud)

当我说:

f = Foo.last
Run Code Online (Sandbox Code Playgroud)

我想让方法f.bar返回最后一个Bar,而不是nil,如果该关联还不存在.

但这不起作用.原因是self [:bar]总是未定义的.它实际上是自我[:bar_id].

我可以做一些天真的事情:

def bar
  if self[:bar_id]
    return Bar.find(self[:bar_id])
  else
    return Bar.last
  end
end
Run Code Online (Sandbox Code Playgroud)

但是,即使已经获取了Bar,这也总是会进行db调用,这当然不是理想的.

有没有人能够了解我如何建立关系,以便belongs_to属性只加载一次,如果没有设置则具有默认值.

activerecord ruby-on-rails associations default-value

47
推荐指数
3
解决办法
2万
查看次数

具有子域的Capybara - default_host

我有一个使用子域来切换数据库的应用程序(多租户).我正在尝试使用Capybara进行集成测试,它确实依赖于子域.

我的理解是,设置Capybara.default_host=某些内容会使我的所有请求都来自此主机.似乎并非如此.在这篇文章中,作者建议只使用主机访问显式网址,但如果我在整个地方导航,这会变得有点烦人.我想设置主机,然后能够按预期使用我的rails路径.不知道我做错了什么,但这是我尝试过的:

# spec_helper.rb
RSpec.configure do |config|
  config.before(:each, :type => :request) do
    Capybara.default_host = 'http://app.mydomain.com'
  end
end

# in some_integration_spec.rb
before do
  puts "Capybara.default_host: #{Capybara.default_host}"
  puts "some_app_url: #{some_app_url}"
end
Run Code Online (Sandbox Code Playgroud)

这产生了输出:

Capybara.default_host: http://app.mydomain.com
some_app_url: http://www.example.com/some_path
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么? default_host似乎什么都不做.正如我所说,我不想说visit(Capybara.default_host + some_app_path),因为每次都有点烦人.为什么还存在default_host选项?

integration-testing ruby-on-rails capybara

47
推荐指数
3
解决办法
2万
查看次数

Ruby(和Rails)嵌套模块语法

我想知道以下两个模块之间的区别

# First Example
module Parent
  module Child
  end
end
Run Code Online (Sandbox Code Playgroud)

# Second Example
module Parent::Child
end
Run Code Online (Sandbox Code Playgroud)

使用第二种方法,似乎必须事先定义父模块,否则我会得到一个'未初始化的常量'错误

鉴于此,定义诸如此类的模块的首选方法是什么,然后在语法和文件结构方面添加嵌套子代(即文件夹等).非常感谢参考Rails方式.

所有意图和目的的这两个例子是否相同?

ruby module ruby-on-rails

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

Java版本和术语,1.6 vs 6.0 OpenJDK vs Sun.

我在理解Java版本时遇到了问题.我看到很多版本,如1.4.2,1.5和1.6,但我也偶然发现5.0和6.0.我不明白这个版本或进展.

我是Java的新手,我已经阅读了一些关于OpenJDK vs Sun的内容,我想我明白了.这些版本是OpenJDK和Sun之间的区别吗?例如,OpenJDK的最新版本是1.6而Sun的版本是6.0?

所有这些版本对于刚接触Java的人来说都非常困惑.

java versioning terminology

26
推荐指数
3
解决办法
8802
查看次数