前几天在windows下用jruby创建了个应用,用了geokit的gem,连接的是sqlserver的数据库。
geokit在jruby下是由于使用的是jdbc-mssql的adapter,名称和matz ruby环境下的不一致,所以会报找不到adapter的错,只用把名称改为SQLSever就可以了。
但是还会出个问题,就是geokit中的geo_scope后不能跟limit,报distance field不识别,看sql log发现jdbc的limit通过生成row_num然后通过row_num in range的搞法搞定,这是jdbc adapter的个bug,懒得理他,直接用array slice搞定。
今天终于搞了个rhel 5的服务器,就忙着将程序迁移到rvm 的1.9.2上。同时改用tiny_tds加activerecord-sqlserver-adapter,结果碰到了ArgumentError (redundant UTF-8 sequence),都是在to_json的时候产生的。
google了一番,有人报这个错给active_support,结果support的开发人员认为这不是他们的bug,把issue的状态变为stale,不做任何更新。我一向认为开源人的敬业精神是不错的,所以这次也继续相信他。从配置上找原因。
对to_json的对象log之后发现都是乱码,觉得这是database connection的问题。查阅了tiny_tds和freetds的文档,发现根本问题是freetds的版本太落后,yum版的根本没有按照tiny的要求更新到9.2。所以把freetds的source 下下来,重新make了一番,问题就神奇般的OK了。
而且在matz ruby下,geokit的limit问题也解决了。
看样子,开源的东西本身还是值得信赖的,关键需要看你有没有能力组合起来。
分享到:
相关推荐
聊天记录开膛手在 WDI 中,我们共享一切。... 如果您收到错误“in `scan': invalid byte sequence in UTF-8 (ArgumentError)”,只需将您的文本日志解析为可以转换为 UTF-8 的内容(例如 )。 我将来会解决这个问题。
第一个错误是`ArgumentError: argument --batch_size: conflicting option string: --batch_size`。这个错误通常意味着命令行参数解析时出现了冲突。在启动程序时,确保没有重复指定`--batch_size`选项,或者检查你...
Boost.Python.ArgumentError: Python argument types in错误解决及Boost安装配置-附件资源
self.new(id, initial_balance) :创建一个新实例,并分配实例变量id和'initial_balance' 无法创建带有初始负余额的帐户-这将raise ArgumentError (Google此) #withdraw(amount) :由于ATM交易,输入的金额#...
raise ArgumentError, "Age must be a positive integer" unless new_age.is_a?(Integer) && new_age > 0 @age = new_age end end person = Person.new person.age = 25 # 成功设置 person.age = -5 # 抛出错误 ...
SmartCore :: Engine· ... SmartCore::ArgumentError (继承自::ArgumentError ); SmartCore::FrozenError (继承自::FrozenError ); SmartCore::NameError (继承自::NameError ); SmartCore
rescue ArgumentError 0 end ``` 这里,`before_set: :to_i`指定了在设置`amount`属性之前调用`to_i`方法。这样,即使输入是字符串,`amount`也会自动转换为整数。 总之,FastAttributes是Ruby开发的一个实用工具...
练习 2:三角形 Kata 三角形可以分为几个维度,其中之一是基于其边长。... 在这种情况下,它应该引发错误 ArgumentError。 奖金 使用affix ,编写测试并构建 App 模块以将 TriangleClassifier 与index.html集成。
练习 2:三角形 Kata 三角形可以分为几个维度,其中之一是基于其边长。... 在这种情况下,它应该引发错误 ArgumentError。 奖金 使用affix ,编写测试并构建 App 模块以将 TriangleClassifier 与index.html集成。
IpAsInt IP地址-整数属性的ip属性的整数转换和activerecord支持。...# => ArgumentError: Invalid IP: need 4 parts IpAsInt . ip2int ( '192.168.0.s' ) # => ArgumentError: Invalid IP: illegal format IpAsI
8. **教育工具**:针对教育领域,Reflector提供了额外的功能,如注释工具,教师可以在学生的屏幕上标注,指导学习。 9. **用户体验**:"还不错"的评价表明,Reflector 7.3.0.18在界面设计、操作便捷性和功能性上...
练习 2:三角形 Kata 三角形可以分为几个维度,其中之一是基于其边长。... 在这种情况下,它应该引发错误 ArgumentError。 奖金 使用affix ,编写测试并构建 App 模块以将 TriangleClassifier 与index.html集成。
它们之间的主要区别是Pair始终由2个元素组成-用更少的元素初始化-丢失的元素用nil填充,当用更多的元素初始化-引发ArgumentError 。 您可以用不同的方式初始化它们: Tuple.new(1, 2) Tuple.new([1, 2]) Tuple(1,...
练习 2:三角形 Kata 三角形可以分为几个维度,其中之一是基于其边长。... 在这种情况下,它应该引发错误 ArgumentError。 奖金 使用affix ,编写测试并构建 App 模块以将 TriangleClassifier 与index.html集成。
- `ArgumentError`:当函数参数不正确时抛出。 - `IOError`:当输入/输出操作失败时抛出。 - `TypeError`:当类型转换失败时抛出。 - `ZeroDivisionError`:当除数为零时抛出。 - `SystemCallError`:当系统调用失败...
raise ArgumentError, "Argument error occurred" rescue ArgumentError => e puts "Caught an argument error: #{e.message}" end ``` #### 七、文件操作 **基本操作:** - 使用 `File` 类来进行文件的读写...
练习 2:三角形 Kata 三角形可以分为几个维度,其中之一是基于其边长。... 在这种情况下,它应该引发错误 ArgumentError。奖金使用affix ,编写测试并构建 App 模块以将 TriangleClassifier 与index.html集成。