小编fot*_*nus的帖子

猴子修补基础红宝石类是一种不好的做法吗?

我正在开发一个 ruby​​ 项目,我们计划使用 ruby​​ 字符串进行一些操作。有些操作很简单(例如计算单词数),而其他操作则更复杂(例如检查给定字符串是否采用正确的语言)。

实现此目的的一种可能方法是使用String额外的方法修补类,而不修改任何现有方法"some string".word_count,并添加和 等行为"some string".cjk?

另一种方法FileUtils是创建一个充满方法的类或模块,并始终使用字符串作为参数,例如OddClassName.word_count("some string")OddClassName.cjk?("some string")。由于可读性,我们更喜欢第一个。

我知道猴子修补第一个替代方案中描述的基本类可能会发生名称冲突。但是,如果这是主应用程序,而不是库,我应该担心它吗?

所以,问题是:

  • 向 ruby​​ 基类添加方法是一种不好的做法吗?如果是,是在所有情况下还是仅在某些情况下?
  • 实现这一目标的最佳方法是什么?
  • “OddClassName”的名称可能是什么?

请提出任何替代方案。

ruby monkeypatching

5
推荐指数
1
解决办法
1161
查看次数

如何测试carrierwave文件是否更改?

我正在尝试测试我的代码上是否使用载波更改了图像,但我找不到这样做的方法.即使文件无效,似乎对象也被标记为已更改,因此它并未真正更改.

查看以下输出:

(rdb:1) job.translated_xliff
#<XliffUploader:0xcd8b380 ...>
(rdb:1) job.changed?
false # As expected, didn't changed yet
(rdb:1) job.translated_xliff = "foo"
"foo"
(rdb:1) job.changed?
true # Changed? "foo" is not a valid file. Lets see the file again...
(rdb:1) job.translated_xliff
#<XliffUploader:0xcd8b380 ...> # same object ID!
Run Code Online (Sandbox Code Playgroud)

如何检查我的代码上是否真的更改了此对象?

编辑:我在github上打开了一个问题,但问题仍未解决,但可以在那里找到更多信息

activerecord ruby-on-rails carrierwave

5
推荐指数
1
解决办法
2025
查看次数

布尔文字和布尔值之间有什么区别?

我似乎无法找到关于这两者之间的区别的明确解释.我还想指出,我也不太了解文字和价值观之间的区别.

布尔文字是否使用布尔对象?

javascript compiler-construction computer-science

4
推荐指数
1
解决办法
5320
查看次数

什么可能导致libdispatch-manager线程崩溃?

Date/Time: 2013-05-22 21:31:31.863 -0400  
OS Version: iOS 6.1.3 (10B329)  
Report Version: 104  

Exception Type: EXC_CRASH (SIGSEGV)  
Exception Codes: 0x0000000000000000, 0x0000000000000000  
Crashed Thread: 1  

Thread 0 name: Dispatch queue: com.apple.main-thread  
Thread 0:  
0 CoreFoundation 0x3203f950 -[NSArrayM dealloc] + 128    
1 Foundation 0x32999218 -[NSFunctionExpression dealloc] + 56  
2 Foundation 0x329991d8 -[NSKeyPathExpression dealloc] + 36  
3 Foundation 0x3299914c -[NSComparisonPredicate dealloc] + 40  
4 CoreData 0x31f6b672 -[NSFetchedResultsController(PrivateMethods) _managedObjectContextDidChange:] + 1362  
5 CoreFoundation 0x32045034 _CFXNotificationPost + 1424  
6 Foundation 0x3295b594 -[NSNotificationCenter postNotificationName:object:userInfo:] + 68  
7 …
Run Code Online (Sandbox Code Playgroud)

core-data crash-reports grand-central-dispatch ios

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

RSpec:哪个是测试授权的正确位置?

我应该在哪里用RSpec测试授权?

使用RSpec创建Rails应用程序时,有三个文件夹似乎足够:

  • 投机/路由
  • 投机/请求
  • 规格/控制器

如果用户登录,我应该测试哪一个?我应该测试多种规格类型吗?

ruby testing tdd rspec ruby-on-rails

4
推荐指数
1
解决办法
2360
查看次数

Rails保存序列化对象失败?

请参阅以下输出:

1.9.3p194 :001 > player = Player.randomize_for_market
 => #<Player id: nil, name: "Gale Bridges", age: 19, energy: 100, attack: 6, defense: 4, stamina: 5, goal_keeping: 3, power: 4, accuracy: 5, speed: 5, short_pass: 5, ball_controll: 4, long_pass: 6, regain_ball: 5, contract_id: nil, created_at: nil, updated_at: nil> 
1.9.3p194 :002 > player.save!
   (0.2ms)  BEGIN
   SQL (20.5ms)  INSERT INTO "players" ("accuracy", "age", "attack", "ball_controll", "contract_id", "created_at", "defense", "energy", "goal_keeping", "long_pass", "name", "power", "regain_ball", "short_pass", "speed", "stamina", "updated_at") VALUES ($1, $2, $3, $4, $5, …
Run Code Online (Sandbox Code Playgroud)

ruby serialization activerecord yaml ruby-on-rails

3
推荐指数
1
解决办法
868
查看次数

Rails是什么是to_query方法的反对者?

我已经转过来了,使用to_query方法将hash转换为params.

如何将其变回哈希?

我试过这个:

require 'rack'
@tester = Rack::Utils.parse_nested_query(params[:search])
Run Code Online (Sandbox Code Playgroud)

在视图中: <%= @tester.class %>

这给了NilClass.

参数是:

"search"=>"fields%5B%5D=exhb_0&fields%5B%5D=exh0_1&fields%5B%5
D=t_g_a&fields%5B%5D=hp_1&fields%5B%5D=s1&fields%5B%5D=overflade_0&railing%5B%5D
=A-3&railing_m=0&type%5B%5D=ltrappa&wood%5B%5D=wood_6"
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails ruby-on-rails-3

3
推荐指数
1
解决办法
1278
查看次数

来自`preg_match`的p代表什么?

在ruby中,有一个叫做的函数gsub,其中g代表globalsub代表substitution.

什么ppreg_match

我想reg是为了regular而且match确实如此match.那是对的吗?

php

3
推荐指数
1
解决办法
673
查看次数

为所有成员路由设置之前的操作?

使用Rails 4播放的时候,我注意到,它定义了一个before_action过滤器set_[model],即要求采取的行动show,edit,updatedestroy.

事实上它非常有用,但我认为没有对所有成员行动都没有多大意义.毕竟,如果您正在使用成员操作,您希望对该成员执行操作,因此您需要在某个时刻从数据库中恢复它.

请注意,通过成员操作,我还意味着routes.rbmembers块中配置的那些操作.

是否有直接的方法来做到这一点,没有列出before_action过滤器上的所有成员操作?

编辑:为了澄清,整点是使用一些rails魔法来获取所有成员路由并生成将在其中传递的数组:only.所以我可以做点什么

before_action set_model only: all_member_routes
Run Code Online (Sandbox Code Playgroud)

其中all_member_routes一段代码返回我的模型的所有成员路由.

甚至更好,

before_action set_model, only_member_actions: true
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails actioncontroller

3
推荐指数
1
解决办法
7962
查看次数

输入键在命令模式下的含义是什么?

到目前为止,我总是猛拉或用y2y或删除2行d2d.

我发现你也可以做y1CR(CR是enter).除了数字1出现在命令上,它实际上猛拉了行.

它也显示在底部2 lines yanked,不会发生使用y2y.

我找不到任何关于vim帮助的提及.这引出了两个问题:

  1. 除了使用执行这些命令时的额外行之外还有其他区别enter吗?
  2. enter从更广泛的意义上说,在vim中应该是什么意思?

编辑:虽然有很多的答案,没有一个人如果地址y2jy1<CR>真的等同于每一种情况下,如果是这样,为什么2 lines yanked只在底部会出现只为<CR>命令.

vim

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