草庐IT

c - Ruby C 扩展开发人员的命名约定

全部标签

ruby - 如果 gem 安装不支持, native 扩展回退到纯 Ruby

我正在开发一个gem,它目前是纯Ruby,但我也一直在为其中一个特性开发一个更快的C变体。该功能在纯Ruby中可用,但有时速度较慢。缓慢只会影响一些潜在用户(取决于他们需要哪些功能,以及他们如何使用它们),因此如果gem无法在目标系统上编译,那么让gem可以优雅地回退到Ruby-only功能是有意义的。我想在单个gem中维护该功能的Ruby和C变体,并在安装时提供gem的最佳(即最快)体验。这将使我能够从我的单个项目中支持最广泛的潜在用户。它还将允许其他人的依赖gem和项目使用目标系统上的最佳可用依赖项,而不是为了兼容性而使用最低公分母版本。我希望require在运行时回退到主lib/

c - Ruby C 扩展开发人员的命名约定

在用C为ruby​​编写扩展时,我对遵循正确的命名约定很感兴趣。具体来说,我指的是将_p添加到谓词的函数名称以及为变量添加前缀m代表模块,c代表类等等。例如,如果我们想在C语言中定义一个像下面这样的谓词方法,我们应该在定义该方法的函数中使用_p作为后缀。classMyClassdefawesome?trueendend在C中:staticVALUEmy_extension_my_class_awesome_p(VALUEself){returnQtrue;}voidInit_my_extension(void){VALUEcMyClass=rb_define_class("MyClas

ruby - 在扩展自身的模块中的实例方法中调用单例方法

我自己扩展了Kernel,在实例方法Kernel#abort的定义中,我调用了单例方法Kernel.abort:moduleKernelextendselfdefabortputs"PressENTERtoexit..."getsKernel.abortendendabort当我调用Kernel#abort时,方法定义中的Kernel.abort调用似乎是指原始的Kernel#abort(扩展为Kernel.abort)。Ruby如何知道当我写Kernel.abort时,我指的是原始的abort方法,而不是我刚刚创建的方法?我将如何递归调用我刚刚创建的新abort方法?

ruby - 在 Windows 上为 Jekyll 安装 native Ruby 扩展

我快要发疯了,所以我只想问:你到底是怎么在Windows上安装RubyGemJekyll的。Jekyll依赖于fast-stemmer-1.0.0并且必须构建为native扩展我在RubyDevKit上找到了这个方便的指南在Windows上安装一个“健全”的环境并且它可以工作,但是fast-stemmer仍然一心想使用nmake来构建二进制文件并返回以下错误:C:\ProgramFiles(x86)\MicrosoftVisualStudio10.0\VC>geminstalljekyllTemporarilyenhancingPATHtoincludeDevKit...Buildin

ruby - Ruby 中命名空间函数的最佳实践? (新手问题)

(StackOverflow告诉我这个问题是“主观的,可能会被关闭”……好吧,无论如何我都会试一试)我正在编写一堆辅助方法(用于TextMate包),我希望(并且我需要)将它们整齐地命名空间。这些方法实际上只是函数,也就是说,它们不会对自身作用域之外的任何东西进行操作,因此并不真正属于某个类。没有什么需要实例化。到目前为止,我一直在这样做,而且效果很好moduleHelpers::Foomodule_functiondefbar#...endendHelpers::Foo.bar#thisishowI'dliketocallthemethod/function但是这样会更好吗:1.跳过

ruby-on-rails - 用于开发的本地 Gem 路径和用于生产的远程 Git repo

我有一个正在本地开发的gem,它被一个项目使用。如果我在中使用path指定gem的位置,我可以进行更改并且项目会选择新代码:gem'example',:path=>"~/path/to/gems/example"但是,当我推送到Heroku时,bundle失败,因为Heroku无法访问我本地计算机上的gem源。所以我可以将gem源推送到远程仓库并将gem源指向那里:gem'example',:github=>'example/example',:branch=>'example_feature'但是我现在需要将更改推送到这个repo,然后更新gem以在我的项目中获取新的更改:$cd~/

ruby-on-rails - 有哪些对 Rails 开发有用的 Emacs 特性

哪些Emacs功能、包、附加组件等可以帮助您进行日常的RubyOnRails开发? 最佳答案 两者的先前版​​本emacs-rails模式,和Rinari(Rails开发的两种最流行的模式)功能非常丰富,但又臃肿又笨重。为了保持一个小巧、干净、可靠、功能强大且可破解的核心,Rinari将避免许多“花里胡哨”的功能。然而,这并不是说这些额外的好东西可能没有用。这个页面应该作为链接到一些其他工具/包的链接点,这些工具/包通常与Rinari和Rails一起工作。如果您对添加到此列表或Rinari的新功能有任何想法,请通过http://gr

ruby - 如何对命名空间中的模型执行 has_many

Rails3为我们提供了这些很棒的生成器,可以将模型和Controller放入命名空间,哇!但现在我无法将它们与其他模型相关联。我正在尝试通过与命名空间模型关联来实现has_many。我已经在互联网上搜索了几天,但没有找到任何示例。/app/models/templates/practice.rbclassTemplates::Practice"position",:dependent=>:destroy,:class=>'Templates::PracticeSequence'has_many:seasons,:through=>:practice_sequences,:order=

访问数组中第一个/最后一个元素的 Ruby 约定

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭9年前。Improvethisquestion这是一个关于约定的问题。下面的两组命令返回相同的结果。a=[1,2,3]a.first#=>1a[0]#=>1a.last#=>3a[-1]#=>3在Ruby中,哪一个是首选,显式索引还是函数?当然,假设这是总是访问第一个或最后一个元素的代码。注意:我一直在考虑每个周期所花费的时间。因为first和last接受参数,所以它们会有更多的开销,但我不知道这是否会影响社区的偏好。谢谢!编辑如果您

ruby - 为什么我应该将开发依赖项添加到我的 gemspec

rubygems想知道我的开发依赖项是什么,这似乎是一个奇怪的功能,到目前为止,我从未见过它用于在运行gem测试时实际加载这些依赖项。 最佳答案 如果有人出于某种原因决定破解您的gem,例如他们在Github上fork它以向其添加功能(他们可能想贡献),如果他们知道您的gem需要哪些开发依赖项(例如测试框架、模拟工具等),这会有所帮助。如果您将bundler与gemspec命令一起使用,它将挂接到您的gemspec依赖项并在您运行时安装开发依赖项以及运行时依赖项bundleinstall这样您就不必手动安装这些gem。gem命令还可