小编And*_*all的帖子

进入插入模式时光标定位

当我在Vim中切换到命令模式时,光标似乎在一个字的末尾或一个字上移回一个字符,当我到达行尾时$,它不会到达实际结束时但是在最后一个单词结尾之前有一个字符,并且l("el")不会向前移动它,我必须使用箭头键到达那里.

我无法找到这种行为的文档,但这对我来说似乎很奇怪.这背后的原因是什么(为了我自己的好奇心),我怎么能绕过它(或处理它)?

vim

35
推荐指数
5
解决办法
2万
查看次数

以编程方式获得完整的Ruby版本?

我知道可以通过RUBY_VERSION常量获取Ruby版本(例如"1.9.3").但是,我想知道如何确定确切的版本(例如:"1.9.3-p0").原因是在早期版本的Ruby 1.9.3中有一个错误没有修复,它在更高版本中运行,我想在一个gem中使用一些代码来解决这个问题.

ruby version

35
推荐指数
2
解决办法
9945
查看次数

mysql2 gem无法使用Homebrew在OS X上使用MySQL 5.6.12进行编译

我更新了我用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)

ruby mysql macos homebrew mysql2

35
推荐指数
6
解决办法
2万
查看次数

Rails类<< self

我想了解class << self下一个例子中的含义.

module Utility
  class Options #:nodoc:
    class << self
      def parse(args)          
      end
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

ruby class

34
推荐指数
2
解决办法
1万
查看次数

如何创建一个新的Ruby gem?

要创建一个新的Ruby gem,我应该使用Jeweler还是应该使用Bundler的内置gem骨架来创建基础gem?重要的是什么区别?

ruby rubygems bundler

34
推荐指数
2
解决办法
1万
查看次数

Git SVN无法从SVN存储库获取

我想一起使用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工作目录?

谢谢.

svn git git-svn

34
推荐指数
1
解决办法
1万
查看次数

一个方法应该结束吗?(问号)只返回一个布尔值?

我认为这只是常识和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?或者有更优雅的方法吗?

ruby

34
推荐指数
3
解决办法
2万
查看次数

分享别人的github项目将其作为宝石发布的道德和礼仪是什么?

我正在做一些关于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之类的全新宝石并从头开始?

哦,困境 - 你会做什么?

git fork rubygems github

33
推荐指数
2
解决办法
4605
查看次数

如何在多页面项目中使用RequireJS构建配置文件+ r.js.

我目前正在学习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/

由于这个项目不是单页应用程序,因此每个页面都有一个单独的主文件(尽管有些页面使用相同的主文件).

我的问题是:

  1. RequireJS是否适用于非单页项目?

  2. 在不使用优化器的情况下,我的每个主文件都以基本相同的配置选项开头:

    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)

    有办法避免这种情况吗?就像让每个主文件包含相同的构建配置文件而不必实际构建它一样?

  3. r.js应该进入httpdocs_siteroot父目录吗?

  4. 我的app目录结构或我使用RequireJS有什么明显的错误吗?

javascript requirejs

33
推荐指数
1
解决办法
1万
查看次数

处理Ruby线程中引发的异常

我正在寻找一个经典的异常处理问题的解决方案.请考虑以下代码:

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秒后捕获异常?如何通过任何线程捕获第一个引发的异常?

ruby multithreading exception-handling

32
推荐指数
2
解决办法
2万
查看次数