我正在努力进一步使用git,我认为钩子是我想要的方式,也许有人可以在这里给我一些建议.
我的计划是拥有一个包含3个分支(开发,登台和生产)的git存储库.我希望提交到这3个分支中的每个分支以在提交后触发不同的脚本.
git是否有能力做到这一点,还是我咆哮错误的树?
提前致谢.
所以,我当然是一个Rails新手,我正在遇到一个相当普遍的问题,但我找不到答案.
我有这样的模型Foo:
class Foo < ActiveRecord::Base
has_many :bars
end
Run Code Online (Sandbox Code Playgroud)
酒吧belongs_to Foo,一切正常.现在我想创建一个Foo并同时构建Bar.像这样:
f = Foo.new(:baz => 'baz')
bars.each do |b|
f.bars.build(:bizzy => b[:bizzy])
end
f.save
Run Code Online (Sandbox Code Playgroud)
我知道这不起作用,因为父记录不存在,所以关联不存在,但必须有一种方法来做到这一点.我暂时通过编辑来解决这个问题:
f = Foo.new(:baz => 'baz')
f.save
f = Foo.find(:first, :conditions => {:baz => 'baz'})
bars.each do |b|
f.bars.create(:bizzy => b[:bizzy])
end
Run Code Online (Sandbox Code Playgroud)
但这并不干净,而且一切都令人不快.
这样做的正确方法是什么?
我需要在控制器的类中渲染一个Sinatra erb模板.我有问题这个问题.我查看了Sinatra rdocs并提出了这个问题:
Sinatra::Templates.erb :template_to_render
Run Code Online (Sandbox Code Playgroud)
当我这样做时,我收到以下错误:
undefined method `erb' for Sinatra::Templates:Module
Run Code Online (Sandbox Code Playgroud)
有没有办法从另一个类调用它?
我正在使用Ruby中的readline为一些输出着色,但是我没有运气让换行正常工作.例如:
"\e[01;32mThis prompt is green and bold\e[00m > "
Run Code Online (Sandbox Code Playgroud)
期望的结果是:
This prompt is green and bold > aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Run Code Online (Sandbox Code Playgroud)
我实际得到的是:
aaaaaaaaaaa is green and bold > aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Run Code Online (Sandbox Code Playgroud)
如果我删除颜色代码,换行工作正常.我知道用bash,如果颜色代码被错误地终止,就会发生这种情况,但我已经尝试了所有我能想到的东西,包括一些不同的宝石,行为是一样的.它也出现在具有不同版本Readline的多个系统上.这种特殊的项目使用rb-readline,而不是到C readline.
Ruby"OptionParser将根据此描述为您自动生成帮助屏幕"[http://ruby.about.com/od/advancedruby/a/optionparser.htm]
有没有办法删除命令选项的帮助文本.我可以使用隐藏命令,而是使用命令选项(切换)并隐藏其帮助上下文.
我有一个非常简单的 Rails 应用程序,我正在从 Rails 4 升级到 Rails 5,但我注意到一些奇怪的地方 default_url_options
在config/environments/test.rb我有:
Rails.application.routes.default_url_options[:host]= ENV["HTTP_HOST"] || "localhost"
Rails.application.routes.default_url_options[:port]= ENV["PORT"] || 3000
Run Code Online (Sandbox Code Playgroud)
我的应用程序有一个名为api. 在我的请求规范中,我看到了这个:
[1] pry> api_v3_sample_url
=> "http://www.example.com:3000/api/v3/sample"
[2] pry> Rails.application.routes.url_helpers.api_v3_sample_url
=> "http://localhost:3000/api/v3/sample"
Run Code Online (Sandbox Code Playgroud)
我错过了什么导致这些 URL 不同?
编辑
根据我设置的这个线程
config.action_controller.default_url_options = {
host: ENV['HTTP_HOST'] || 'localhost'
}
Run Code Online (Sandbox Code Playgroud)
在config/environments/test.rb但现在我得到这样的:
> Rails.application.routes.url_helpers.api_v3_sample_url
ArgumentError: Missing host to link to! Please provide the :host parameter, set default_url_options[:host], or set :only_path to true
> api_v3_sample_url
=> "http://www.example.com/api/v3/sample"
Run Code Online (Sandbox Code Playgroud)
编辑 2
可能值得注意的是,这些是请求规范而不是功能规范(不使用水豚)。
我遇到了Ruby和File.chmod的一个相当奇怪的问题(FileUtils.chmod存在同样的问题.
以下是我为测试用例所做的事情:
File.chmod(1777, "testfile")
Run Code Online (Sandbox Code Playgroud)
但是一旦我这样做了,我就把它作为一个权限集:
--wxrwS--t
Run Code Online (Sandbox Code Playgroud)
仅在使用*nix 4位数限制集时才存在此问题.我用谷歌搜索,但没有得到任何有价值的东西.当权限集为0777时,它会正确分配,但第一个数字的任何高于0的内容都会使权限变得非常糟糕.
有人有任何提示吗?
我知道我可以通过系统调用来做我想做的事情,但我确信这很简单,我很想念.
我正在开发一个读取一些传感器信息并将其作为哈希值返回的类。我想使用哈希键作为访问器,但我没有太多运气让它工作。到目前为止,这是我的代码的相关部分:
我已经尝试过使用 method_missing 和使用:define_method方法。
attr_reader :sensor_hash
def method_missing(name, *args, &blk)
if args.empty? && blk.nil? && @sensor_hash.has_key?(name.to_s)
@sensor_hash[name.to_s]
else
super
end
end
def sensor(*sensor_to_return)
sensor_output = run_command(this_method_name)
sensor_output = sensor_output.split("\n")
sensor_output.map! { |line| line.downcase! }
unless sensor_to_return.empty?
sensor_to_return = sensor_to_return.to_s.downcase
sensor_output = sensor_output.grep(/^#{sensor_to_return}\s/)
end
@sensor_hash = Hash.new
sensor_output.each { |stat| @sensor_hash[stat.split(/\s+\|\s?/)[0].gsub(' ','_').to_sym] = stat.split(/\s?\|\s?/)[1..-1].each { |v| v.strip! } }
@sensor_hash.each do |k,v|
puts v.join("\t")
self.class.send :define_method, k { v.join("\t") }
end
return @sensor_hash
Run Code Online (Sandbox Code Playgroud)
返回的数据是以传感器名称作为键的哈希值,值是返回的所有其他内容的数组。我的目标是能够调用Class.sensor.sensor_name并获取Class.sensor[:sensor_name]. 目前,我所能得到的只是一个未定义的方法错误。有人知道我在这里做错了什么吗?