我现在已经在一些库上看到了这种语法,我想知道它的好处是什么.(注意我很清楚闭包和代码在做什么,我只关心语法差异)
!function(){
// do stuff
}();
Run Code Online (Sandbox Code Playgroud)
作为更常见的替代品
(function(){
// do stuff
})();
Run Code Online (Sandbox Code Playgroud)
用于自我调用匿名函数.
我想知道一些事情.首先,允许顶级示例实际工作的是什么?为了使这个陈述在语法上正确,为什么必要的爆炸?我也被告知+
有效,我相信其他一些代替!
第二,有什么好处?我所能说的只是它节省了一个角色,但我无法想象吸引众多采用者会带来如此巨大的好处.我还缺少其他一些好处吗?
我可以看到的唯一其他差异是自调用函数的返回值,但在这两个示例中,我们并不真正关心函数的返回值,因为它仅用于创建闭包.那么有人可以告诉我为什么人们可能会使用第一种语法吗?
因此,根据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) 我正在尝试重新使用我编写的提供面板样式的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) 我们正在使用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慢得多.
有什么想法吗?
我是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对象的属性的默认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属性只加载一次,如果没有设置则具有默认值.
我有一个使用子域来切换数据库的应用程序(多租户).我正在尝试使用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选项?
我想知道以下两个模块之间的区别
# 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方式.
所有意图和目的的这两个例子是否相同?
我在理解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的人来说都非常困惑.
activerecord ×2
ajax ×1
associations ×1
block ×1
capybara ×1
class-method ×1
java ×1
javascript ×1
jquery ×1
json ×1
module ×1
partial ×1
postgresql ×1
render ×1
ruby ×1
scopes ×1
syntax ×1
terminology ×1
truncate ×1
versioning ×1