我不时会遇到这个问题.
假设我已经按照以下方式阅读了rails的源代码,因为我遇到了一些问题.
git clone git://github.com/rails/rails.git
Run Code Online (Sandbox Code Playgroud)
在研究期间,我测试了一些东西,现在我有一个修复,我希望rails核心团队来看看.如何将我的更改推送到分叉版本的rails.
记得当我克隆时,我没有克隆分叉版本而是只读版本.
并不是说我反对分叉.只是有时我认为我只是要浏览然后我想添加一些东西.
我有一个Rails 3.0.7应用程序.在功能测试中,我有以下代码.我没有使用rspec或任何东西.这是带有导轨的普通香草功能测试.
assert_response :success
Run Code Online (Sandbox Code Playgroud)
以上断言正在过去.但是,我需要断言作为响应正文返回的完整内容.我如何访问响应正文?
我知道ActiveSupport提供的这个功能.
h = ActiveSupport::OrderedOptions.new
h.boy = 'John'
h.girl = 'Mary'
h.boy # => 'John'
h.girl # => 'Mary'
Run Code Online (Sandbox Code Playgroud)
但是我已经有一个大哈希,我想使用点表示法访问该哈希.这是我试过的:
large_hash = {boy: 'John', girl: 'Mary'}
h = ActiveSupport::OrderedOptions.new(large_hash)
h.boy # => nil
Run Code Online (Sandbox Code Playgroud)
那没用.我怎样才能做到这一点.
我正在使用ruby 1.9.2
更新:
对不起我应该提到我不能使用openstruct,因为它没有Struct所具有的each_pair方法.我事先不知道密钥所以我不能使用openstruct.
我有一个line_items包含以下列的表:
product_id
variant_id
Run Code Online (Sandbox Code Playgroud)
variant_id 是可以为空的.
这是条件:
variant_id为NULL则product_id应该是唯一的.variant_id有一个值,则组合product_id和variant_id应该是唯一的.这可能在PostgreSQL中吗?
我正在使用Rails 3.1,在资产下我有这样的文件:
assets
javascripts
admin
admin.js
a1.js
client
client.js
c1.js
Run Code Online (Sandbox Code Playgroud)
admin.js看起来像这样
//
//= require jquery
//= require jquery_ujs
//= require a1
Run Code Online (Sandbox Code Playgroud)
client.js看起来像这样
//
//= require jquery
//= require c1
Run Code Online (Sandbox Code Playgroud)
在开发模式下一切正常.当我做rake资产:预编译然后我没有在公共/资产中看到任何javascript文件.我确实看到了公共/资产中的所有样式表.
我认为这与在这种情况下清单文件(admin.js和client.js)在子目录中的事实有关.
那么rake资产是这样的:预编译不会查看子目录吗?
对于如何解决这个问题,有任何的建议吗.我更喜欢按照我的方式设置文件,因为我有一堆javascript文件.
我有以下课程:
class User
code1 = Proc.new { }
code2 = lambda { }
define_method :test do
self.class.instance_eval &code1
self.class.instance_eval &code2
end
end
User.new.test
Run Code Online (Sandbox Code Playgroud)
为什么第二个instance_eval失败并出现wrong number of arguments (1 for 0)错误?
我正在使用Rails 3.1.这是我的代码,要求用户输入信用卡到期月份和年份.
<div class="field">
<%= f.label :expires_on, 'Expiration date' %>
<br />
<%= select_month nil, {add_month_numbers: true}, {name: 'creditcard[month]', id: "card_month"} %>
<%= select_year nil, {start_year: Date.today.year, end_year: Date.today.year+15}, {name: 'creditcard[year]', id: "card_year"} %>
</div>
Run Code Online (Sandbox Code Playgroud)
以上代码有效.但问题是,如果存在验证错误,则重置所选的到期日和月份.
我试过f.select_month但不支持.
我正在更改我的ruby gem以使其与资产管道兼容.在我的gemspec中,我想说它需要rails版本> 3.1和< 4.我怎么做.
目前这就是我所拥有的.
s.add_dependency("rails", ">= 3.1")
但这并不理想.这说明它也rails 4.0可能不适用.
根据我在网上的所有读数,backtick和之间的区别system是返回的内容.backtick返回STDOUT而system收益true或false.
我被告知他们都使用subshell来执行操作.
但是我注意到另一个区别.
output = system('aaa')
puts "output is: #{output}"
output = `aaa`
puts "output is: #{output}"
Run Code Online (Sandbox Code Playgroud)
上面代码的结果是
$ ruby test.rb
output is:
lab.rb:4:in ``': No such file or directory - aaa (Errno::ENOENT) from test.rb:4:in `<main>'
Run Code Online (Sandbox Code Playgroud)
因此,似乎在backtick例外情况下提升到主程序.操作system吞下异常,主程序永远不会看到异常.
我正在使用ruby 1.9.3.
我的分析是对的吗?
更新:得到了答案.它在这里https://gist.github.com/3730986.
我正在使用https://github.com/carlhuda/janus.
我正在进行Rails开发,我有一些JavaScript文件,我们正在使用es6功能.这些文件有扩展名.es6.所以文件命名为users.es6.
我如何告诉vim处理.es6以JavaScript文件结尾的文件,以便我可以获得语法高亮.
我正在使用macvim,但我认为这不重要.