草庐IT

安全模块

全部标签

ruby - 查找模块中可用的类

我有一个模块MyModule。我动态地将类加载到其中。如何获取在其命名空间中定义的类的列表?例子:defload_pluginsDir.glob(File.dirname(__FILE__)+'/plugins/*.rb')do|f|MyModule.class_evalFile.read(f)end#nowhowcanIfindthenewclassesI'veloadedintoMyModule?end我应该说每个f都包含类似“classFoo;end”的内容。您也可以这样想:在Rails中,我如何以编程方式找到ActiveRecord模块中定义的所有类?

ruby - 安全的 ActiveRecord 查询

我正在尝试编写LIKE查询。我读到纯字符串查询不安全,但是我找不到任何说明如何编写安全的LIKE哈希查询的文档。这可能吗?我应该手动防御SQL注入(inject)吗? 最佳答案 为确保您的查询字符串得到正确清理,请使用数组或散列查询语法来描述您的条件:Foo.where("barLIKE?","%#{query}%")或:Foo.where("barLIKE:query",query:"%#{query}%")如果query可能包含%字符而您不想允许它(这取决于您的用例),那么您需要清理查询sanitize_sql_like第一:F

ruby - 如何在 Ruby 中初始化模块的实例变量?

我有一些模块,我想在其中使用实例变量。我目前正在像这样初始化它们:moduleMyModuledefself.method_a(param)@var||=0#otherlogicgoeshereendend我也可以调用一个init方法来初始化它们:definit@var=0end但这意味着我必须记住始终调用它。有更好的方法吗? 最佳答案 在模块定义中初始化它们。moduleMyModule#selfhereisMyModule@species="frog"@color="redpolka-dotted"@log=[]defself.

L298n电机驱动模块(芯片)快速入门

目录l298n模块详解l298n芯片简介 在嵌入式领域中l298n属于最常用的电机驱动模块,该模块稳定,耐用,操作简单备受广大电子爱好者的喜爱,今天小编结合自己开发的经验来给初学者门聊聊如何使用这款模块及芯片的用法l298n模块详解如图所示,模块左右两侧的2P的端子是接入电机的,左右两端分别可以接入一个直流电机。由于直流电机不分正负所以怎样接都是可以的。中间3P的端子分别接12V,GND,5V。黑色排针部分左右两端的跳帽插上代表使能,l298n有两个通道,所以有两个使能跳帽。中间的四个排针是逻辑输入,左边两个为一组,右边两个为另一组,真值表如下图所示下图附带了l298n模块的原理图,想自己di

ruby-on-rails - Rails/lib 模块和

我正在为open_flash_chart插件编写自定义包装器。它位于/lib中,并将其作为模块加载到ApplicationController中。但是,我遇到了类层次结构问题或其他问题。我可以从任何Controller访问open_flash_chart功能,如OpenFlashChart、Line等。但是,在/lib模块的类中,它不起作用!有什么想法吗? 最佳答案 在Rails中加载文件有两种方式:它在自动加载过程中注册,您引用一个与文件名对应的常量。例如,如果您有app/controllers/pages_controller.

ruby - 从 Ruby 中的模块/mixin 继承类方法

众所周知,在Ruby中,类方法是继承的:classPdefself.mm;puts'abc'endendclassQ然而,令我惊讶的是它不适用于mixin:moduleMdefself.mm;puts'mixin'endendclassN;includeMendM.mm#worksN.mm#doesnotwork!我知道#extend方法可以做到这一点:moduleX;defmm;puts'extender'endendY=Class.new.extendXX.mm#works但我正在编写一个包含实例方法和类方法的混合(或者更确切地说,我想编写):moduleCommondefself

ruby - 如何知道 ruby​​ 中什么不是线程安全的?

startingfromRails4,默认情况下,一切都必须在线程环境中运行。这意味着我们编写的所有代码和所有我们使用的gem必须是threadsafe所以,我对此有几个问题:什么在ruby​​/rails中不是线程安全的?VS什么是ruby​​/rails中的线程安全?是否有已知线程安全的gem列表,反之亦然?是否有非线程安全示例的常见代码模式列表@result||=some_method?rubylang核心中的数据结构如Hash等线程安全?在MRI上,哪里有GVL/GIL这意味着一次只能运行1个ruby​​线程,除了IO,线程安全的变化对我们有影响吗?

ruby - Ruby 中的私有(private)模块方法

我有一个两部分的问题最佳实践我有一个算法可以使用公共(public)接口(interface)对数据结构执行某些操作它目前是一个包含许多静态方法的模块,除了一个公共(public)接口(interface)方法外,所有静态方法都是私有(private)的。有一个实例变量需要在所有方法之间共享。这些是我能看到的选项,哪个是最好的?:模块带有静态(ruby中的“模块”)方法Class使用静态方法Mixin模块用于包含到数据结构中重构修改该数据结构(非常小)的算法部分,并使其成为调用算法模块静态方法的混合技术部分有什么方法可以制作私有(private)模块方法?moduleThingdefs

ruby-on-rails - Rails 模块中的 mattr_accessor 是什么?

我真的无法在Rails文档中找到它,但似乎'mattr_accessor'是'attr_accessor'的模块推论(getter和setter)在普通的Ruby类中。例如。在类里面classUserattr_accessor:namedefset_fullname@name="#{self.first_name}#{self.last_name}"endend例如。在模块中moduleAuthenticationmattr_accessor:current_userdeflogin@current_user=session[:user_id]||nilendend此辅助方法由Acti

ruby-on-rails - xxx 的副本已从模块树中删除但仍处于事件状态

我很确定该错误与TenantIdLoader模块的实际内容无关。相反,它与ActiveSupport依赖关系有关。我似乎无法克服这个错误。根据我的阅读,这是因为要么ActiveRecord::Base正在重新加载,要么是Company::TenantIdLoader正在重新加载,并且它以某种方式无法传达这一点。请帮忙!我非常希望能够升级到Rails4.2。编辑我现在了解到这是因为我正在引用自动重新加载的Tenant。不过,我需要能够实际引用该类,所以有人知道如何解决这个问题吗?配置/应用程序.rbconfig.autoload_paths+=%W(#{config.root}/lib/