有没有办法让git为你提交一个提交日志,只提交触及文件中特定行的提交?
喜欢git blame
,但git blame
会向您显示触及特定行的最后提交.
我真的想得到一个类似的日志,而不是文件中任何地方的提交列表,而只是提交到特定行的提交.
我对twitter bootstrap网格中的各种选项以及它们如何组合起来感到困惑.
首先,你可以有一个普通的固定container
,或者container-fluid
.
然后,任何一个都可以包括普通row
行或流体行row-fluid
.也就是说,你可以拥有一个带有流体排的固定容器,或一个带有固定排的容器流体......
然后,您可以在其中包含"响应式"媒体查询.
我对这些事情如何相互作用感到困惑.但让我们从一个明显的例子开始.
但是,在我的浏览器中,在该示例页面本身上 - 两个网格的行为相同.也许是因为示例页面使用可选的响应式媒体查询?在两个网格示例中,如果我开始逐渐缩小我的浏览器窗口,则网格元素不会逐渐变窄 - 一旦达到某个(响应性)边界宽度,它们会捕捉到更小的尺寸,并再次在更大的边界宽度处.但是普通的"固定"示例和"流动"示例在这里表现完全相同 - 那么差异究竟是什么呢?
fixed-width fluid-layout responsive-design twitter-bootstrap
通过安装在默认的Rails应用程序rails new
具有config.assets.compile = false
生产.
通常的做法是rake assets:precompile
在部署应用程序之前运行,以确保编译所有资产管道资产.
那么如果我config.assets.compile = true
投入生产会发生什么?
我precompile
不再需要跑步了.我认为会发生的是第一次请求资产时,它将被编译.这将是第一次出现性能损失(这意味着您通常需要在生产中使用js运行时才能执行此操作).但除了这些缺点之外,在资产被懒散编译之后,我认为对该资产的所有后续访问都不会受到性能影响,应用程序的性能将与初始首次命中的懒惰编译之后的预编译资产完全相同.这是真的?
有什么我想念的吗?没有投入config.assets.compile = true
生产的其他原因?如果我在生产中有一个JS运行时,并且愿意为首次访问资产而采取降级性能的权衡,作为不必运行的回报precompile
,这是否有意义?
所以Rails 3.1附带了一个鲜为人知的"rails g plugin new"生成器,它为你提供了一个适合rails gem插件的骨架.[http://guides.rubyonrails.org/plugins.html#or-generate-a-gemified-plugin]
这样做的一个有用的事情是为Test :: Unit的测试设置方便.它为您提供了一个基本的虚拟Rails应用程序,您的测试可以在上下文中运行,以测试仅在Rails应用程序副本中运行的"引擎"行为.(它把它放在./test/dummy中).但是你的测试仍然在my_gem/test中,测试不会存在于虚拟app中.并且my_gem/test/test_helper.rb在那里编写,测试将在虚拟应用程序的上下文中运行,在../dummy/config/environment上启动.
我之所以这样描述是因为我认为很多人都不知道这个新的发电机,它可以很好地设置.
但我的问题是,有没有人想出如何用rspec做这个呢?我曾尝试按照相同的原则DIY为rails specing中的rspec设置这样的东西,但我遇到了各种令人困惑的障碍,我希望也许别人已经弄明白了(或者有兴趣搞定它对我们其他人来说,嘿).
我正在编写代码,将一些数据从一个数据库迁移到另一个数据库,覆盖目标中的一些数据.它使用ActiveRecord,因为它已经与使用AR的Rails应用程序相关联.
由于某些数据将被覆盖,我想提供一个确认提示,告诉用户用于目标数据库连接的实际连接字典/规范.你知道,适配器,主机,用户名,密码,数据库,你在database.yml中列出的东西.
我可以将模型用于我正在编写的内容并要求SomeModel.connection ....但似乎根本没有API来从实时连接对象中获取实际的连接规范.
真?我错过了什么吗?还有其他任何想法,甚至是无证的api?
我读到某个地方'minitest'是"ruby 1.9.2+的新测试::单位".
但是Ruby 1.9.3似乎包括两个 测试::单位 和 MINITEST,是真的吗?
在默认轨测试,在列出的Rails测试指南 ....之类的东西ActiveSupport::TestCase
,ActionController::TestCase
被这些使用Test::Unit
或Minitest
?
在rails指南中,它显示了如下定义的测试示例:
test "should show post" do
get :show, :id => @post.id
assert_response :success
end
Run Code Online (Sandbox Code Playgroud)
test string
与定义类似名称的方法相反,该语法test_something
在任何一个 Test::Unit
或Minitest 的文档中都没有提到.来自哪里?Rails是否添加它,或者它实际上是...的一部分......无论是测试lib rails使用的是什么?
PS:请不要告诉我"只使用rspec".我知道rspec.我试图在rails的上下文中探索stdlib替代方案.
我有一个我从某种输入中读过的字符串.
据我所知,它是UTF8.好的:
string.force_encoding("utf8")
Run Code Online (Sandbox Code Playgroud)
但是如果这个字符串中包含的字节实际上不是合法的UTF8,我现在想知道并采取行动.
通常,如果遇到这样的字节,force_encoding("utf8")会提高吗?我相信它不会.
如果我正在做#encode,我可以从方便的选项中选择如何处理源编码(或目标编码)中无效的字符.
但是我没有做#encode,我正在做一个#force_encoding.它没有这样的选择.
它会有意义吗?
string.force_encoding("utf8").encode("utf8")
Run Code Online (Sandbox Code Playgroud)
马上得到一个例外?通常从 utf8 到 utf8的编码没有任何意义.但是,如果存在无效字节,这可能是让它立即提升的方法吗?或者使用:replace
选项etc来执行与无效字节不同的操作?
但是,不,似乎也无法做到这一点.
谁知道?
1.9.3-p0 :032 > a = "bad: \xc3\x28 okay".force_encoding("utf-8")
=> "bad: \xC3( okay"
1.9.3-p0 :033 > a.valid_encoding?
=> false
Run Code Online (Sandbox Code Playgroud)
好的,但我如何找到并消除那些坏字节?奇怪的是,这不会引起:
1.9.3-p0 :035 > a.encode("utf-8")
=> "bad: \xC3( okay"
Run Code Online (Sandbox Code Playgroud)
如果我转换为不同的编码,它会!
1.9.3-p0 :039 > a.encode("ISO-8859-1")
Encoding::InvalidByteSequenceError: "\xC3" followed by "(" on UTF-8
Run Code Online (Sandbox Code Playgroud)
或者,如果我告诉它,它会用"?"代替它.=>
1.9.3-p0 :040 > a.encode("ISO-8859-1", :invalid => :replace)
=> "bad: ?( okay"
Run Code Online (Sandbox Code Playgroud)
因此,当转换为不同的编码时,ruby有智能知道utf-8中的坏字节,并用其他东西替换em.但我不想转换为不同的编码,我想保留utf8 - 但如果那里有一个无效字节,我可能想要提高,或者我可能想用替换字符替换无效字节.
是不是有办法让红宝石这样做?
更新 …
这似乎不是一件难事.
我想要一个ruby脚本来确定系统上当前是否安装了某个gem(任何版本和/或某个版本规范)(无论在哪里gem list
看),如果没有,请安装它.
是的,我知道在某些情况下,捆绑包很棒.相信我有一个案例,出于奇怪的原因,我不想使用bundler.我真的想以编程方式询问本地gem repo.
一种可编程安装的方法就是gem install
确保安全.
但我无法找到一种可靠的方法来以编程方式询问是否安装了特定的gem,而不是shell,而不是rubygem api,而不是任何东西.
我错过了吗?
我已经开发了一段时间的Rails,但不知何故,直到现在才避免使用capistrano.
试图弄清楚如何开始,我已经对最佳的capistrano配方感到困惑,因为资产管道部署的相当"标准"的rails 3.x.也许是因为环顾谷歌,人们可以从历史的各个部分找到"答案",不同的历史时期将不同的东西纳入上限.
我有一个应用程序,我保留在git,rails 3.2,带有资产管道,只部署到一个有乘客的主机.
想一想,我基本上需要限制:
哦,废话,一个可能奇怪的事情:
什么是最标准,最简单,最简单,最易于维护的方法来制作所有这些东西?有什么我想念的吗?如果我指定的某些内容不是标准的,我很乐意使用标准的最佳实践(可能是一两个例外,我真的想为每个部署使用git标记,即使这不是标准的最佳实践,虽然我认为它会是,但是看着文档如何运作却感到困惑)
这里有一个简单的答案吗?
编辑:是的,我看过Cap wiki.可能是因为我很慢,但我在那里找到了没有问题的答案.甚至没有"入门"文件.没有关于默认开箱即用配方实际上做什么的文档.等等
更新:在我搞清楚后,我写了自己的指南.https://gist.github.com/2161449
据我所知,capistrano :db
角色仅用于运行迁移.
(因此,在大多数情况下,它可能实际上不应该是运行数据库的服务器.为什么你会在那里有ruby/rails堆栈(或允许ssh登录)?它只是你想要实际执行rails迁移的服务器).
并且只有标识为db role with的服务器才:primary => true
用于运行迁移.
因此,任何其他标识为"db"角色但没有:primary => true
......的服务器根本不使用任何内容?那么为什么创建默认的deploy.rb会capify .
鼓励你列出它们呢?你甚至会在这里列出什么?
我缺少什么?
ruby ×3
capistrano ×2
gem ×2
activerecord ×1
fixed-width ×1
fluid-layout ×1
git ×1
minitest ×1
rspec ×1
rspec-rails ×1
testunit ×1