SWIG:Ruby重载问题
我有一个sinatra Web应用程序和一个C ++库,我可以使用swig创建的绑定在sinatra(ruby)中“需要”。
我还有第二个非常类似的库,其中的函数名称与第一个函数名称部分相同。 当我同时需要它们时,首先加载的那个’获胜’,即对模糊函数名称的调用总是映射到该库。
原因是’require’只加载尚未加载的东西,而’load’无论如何都会加载。 但是,’load’似乎不适用于.so文件,仅适用于ruby源文件。 有帮助吗?
谢谢
require
在$“数组中查找以确定是否应该重新加载模块。您可以尝试删除它并要求。但不确定这是否适用于您的用例,因为似乎命名空间仍然可能被污染。
irb(main):001:0> require 'mysql' => true irb(main):002:0> require 'mysql' => false irb(main):003:0> $".delete('mysql.so') => "mysql.so" irb(main):004:0> require 'mysql' /usr/lib64/ruby/site_ruby/1.8/x86_64-linux/mysql.so: warning: already initialized constant MysqlRes /usr/lib64/ruby/site_ruby/1.8/x86_64-linux/mysql.so: warning: already initialized constant MysqlField /usr/lib64/ruby/site_ruby/1.8/x86_64-linux/mysql.so: warning: already initialized constant MysqlError /usr/lib64/ruby/site_ruby/1.8/x86_64-linux/mysql.so: warning: already initialized constant VERSION /usr/lib64/ruby/site_ruby/1.8/x86_64-linux/mysql.so: warning: already initialized constant OPT_CONNECT_TIMEOUT /usr/lib64/ruby/site_ruby/1.8/x86_64-linux/mysql.so: warning: already initialized constant OPT_COMPRESS /usr/lib64/ruby/site_ruby/1.8/x86_64-linux/mysql.so: warning: already initialized constant OPT_NAMED_PIPE => true
- 获取libxml2.2.dylib的错误“文件不是必需的体系结构”
- 在Yosemite中安装Ruby时出错
- ruby / rails的自然语言日期解析器
- 如何确定记录是否是迭代中的第一个/最后一个?
- 带有node.js的Ruby子进程
- 无法使用gem“pg”从我的Ruby脚本连接到Postgres(pg)数据库(这不是rails,只是纯粹的ruby)
- 在rails3中的控制器上使用number_with_precision
- Rails使用camelCase呈现json对象
- Ruby on Rails:针对variable.hash_set.inspect的漂亮打印……有没有办法在控制台中打印漂亮的.inpsect?