当我在Vim中切换到命令模式时,光标似乎在一个字的末尾或一个字上移回一个字符,当我到达行尾时$,它不会到达实际结束时但是在最后一个单词结尾之前有一个字符,并且l("el")不会向前移动它,我必须使用箭头键到达那里.
我无法找到这种行为的文档,但这对我来说似乎很奇怪.这背后的原因是什么(为了我自己的好奇心),我怎么能绕过它(或处理它)?
我知道可以通过RUBY_VERSION常量获取Ruby版本(例如"1.9.3").但是,我想知道如何确定确切的版本(例如:"1.9.3-p0").原因是在早期版本的Ruby 1.9.3中有一个错误没有修复,它在更高版本中运行,我想在一个gem中使用一些代码来解决这个问题.
我更新了我用Homebrew安装的所有软件包.MySQL升级到5.6.12(从5.5.27左右):
$ mysql --version
mysql Ver 14.14 Distrib 5.6.12, for osx10.8 (x86_64) using EditLine wrapper
Run Code Online (Sandbox Code Playgroud)
现在mysql2 gem不再编译了:
$ gem install mysql2
Building native extensions. This could take a while...
ERROR: Error installing mysql2:
ERROR: Failed to build gem native extension.
/Users/pupeno/.rvm/rubies/ruby-1.9.3-p429-perf/bin/ruby extconf.rb
checking for rb_thread_blocking_region()... yes
checking for rb_wait_for_single_fd()... yes
checking for mysql.h... no
checking for mysql/mysql.h... no
-----
mysql.h is missing. please check your installation of mysql and try again.
-----
*** extconf.rb failed ***
Could not create Makefile …Run Code Online (Sandbox Code Playgroud) 我想了解class << self下一个例子中的含义.
module Utility
class Options #:nodoc:
class << self
def parse(args)
end
end
end
end
Run Code Online (Sandbox Code Playgroud) 我想一起使用SVN和Git.我有一个svn存储库,我正在尝试获取工作目录,但我遇到如下错误.
svn,版本1.6.6(r40053)
git版本1.7.3.1.msysgit.0
svn存储库路径是file:/// d:/ tmp/test-svn/repos
这些是我做的步骤:
D:\tmp\test-svn>mkdir my-project
D:\tmp\test-svn>cd my-project
D:\tmp\test-svn\my-project>git svn init file:///d:/tmp/test-svn/repos
Initialized empty Git repository in D:/tmp/test-svn/my-project/.git/
D:\tmp\test-svn\my-project>git svn fetch
Couldn't open a repository: Unable to open an ra_local session to URL: Unable to
open repository 'file:///d:/tmp/test-svn/repos/my-project/trunk': Expected FS f
ormat '2'; found format '4' at C:\Program Files\Git/libexec/git-core/git-svn lin
e 1773
Run Code Online (Sandbox Code Playgroud)
那么问题是什么?如何从svn存储库获取数据到git工作目录?
谢谢.
我认为这只是常识和Ruby惯例,但我有这个方法:
def is_subscribed?(feed_url)
Subscription.find_by_user_id_and_feed_id(self[ :id ], Feed.find_by_feed_url(feed_url))
end
Run Code Online (Sandbox Code Playgroud)
我得到的唯一困惑是,这不会像我最初预期的那样返回布尔值,方法名称的末尾加上问号.我的印象是,在将对象评估为条件时,true如果不是则返回nil.
显然我在这里忽略了这一点,并没有像我想的那样评估它.
所以,我的问题是,最好只做一个if (condition) true else false?或者有更优雅的方法吗?
我正在做一些关于CultureGrid的业余时间编码.他们有一个SOLR API来访问1.2米的文化艺术品.我已经发布了一个gem来使用它们的服务,但我对使用Datamapper和SOLR适配器后端以更好的方式做到这一点有了一个很好的想法.
我刚刚在Github上发现了一个名为dm-solr-adapter的项目.它是2008年其他人工作的一个分支,使用它你必须克隆项目并运行一个rake任务来安装它(在heroku上使用不多,所以我必须提供它).不幸的是,这项任务现在被打破了,因为他们没有固定他们的宝石版本,Bones在版本2和3之间发生了很大的变化.
基本上 - 它需要一些重新编码才能让它成为一个宝石,如果我要这样做,我不妨自己释放它并按我所知的方式去做 - 使用珠宝商代替.
所以,当然我会删除所有作者,但我只是想知道这里的道德和礼仪是什么.我是否在gem中包含我的用户名,还是使用原始的gem名称?这可能会破坏其他人的安装,即使gem没有列在Rubygems.org上吗?我遵循他们的编号惯例吗?他们似乎选择了"1.0.0"并坚持下去,没有进一步的活动.或者我只是从版本0.1.0开始?
如果不这样做,我只是抓住我想要的东西,将它包含在我的新项目中并给出帽子提示?对于那些可能想要做同样事情的人来说,这听起来并不是很有用.
或者我可能会把我觉得有用的东西拿出来,制作一个叫做dm-solr-backend之类的全新宝石并从头开始?
哦,困境 - 你会做什么?
我目前正在学习RequireJS基础知识,并对构建配置文件,主文件以及RequireJS与多页项目的使用有一些疑问.
我项目的目录结构如下:
httpdocs_siteroot/
app/
php files...
media/
css/
css files...
js/
libs/
jquery.js
require.js
mustache.js
mains/
main.page1.js
main.page2.js
main.page3.js
plugins/
jquery.plugin1.js
jquery.plugin2.js
jquery.plugin3.js
utils/
util1.js
util2.js
images/
由于这个项目不是单页应用程序,因此每个页面都有一个单独的主文件(尽管有些页面使用相同的主文件).
我的问题是:
RequireJS是否适用于非单页项目?
在不使用优化器的情况下,我的每个主文件都以基本相同的配置选项开头:
requirejs.config({
paths: {
'jquery': 'http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min'
},
baseUrl: '/media/js/',
// etc...
});
require(['deps'], function() { /* main code */ });
Run Code Online (Sandbox Code Playgroud)
有办法避免这种情况吗?就像让每个主文件包含相同的构建配置文件而不必实际构建它一样?
r.js应该进入httpdocs_siteroot父目录吗?
我的app目录结构或我使用RequireJS有什么明显的错误吗?
我正在寻找一个经典的异常处理问题的解决方案.请考虑以下代码:
def foo(n)
puts " for #{n}"
sleep n
raise "after #{n}"
end
begin
threads = []
[5, 15, 20, 3].each do |i|
threads << Thread.new do
foo(i)
end
end
threads.each(&:join)
rescue Exception => e
puts "EXCEPTION: #{e.inspect}"
puts "MESSAGE: #{e.message}"
end
Run Code Online (Sandbox Code Playgroud)
此代码在5秒后捕获异常.
但是如果我将数组更改为[15, 5, 20, 3],则上面的代码会在15秒后捕获异常.简而言之,它始终捕获第一个线程中引发的异常.
任何想法,为什么如此.为什么不在每次3秒后捕获异常?如何通过任何线程捕获第一个引发的异常?