Ruby-c选项实际任务

Ruby-c选项实际任务,ruby,indentation,Ruby,Indentation,我有一小段Ruby代码,解释器突然开始抱怨。当我运行程序时,我得到: :85: warning: mismatched indentations at 'end' with 'while' at 75 但是我看不到任何不匹配的while/end 如果我用c选项检查它,我得到: ruby-cdb_manager.rb 语法正常 那么-c到底在做什么呢?它实际上是在检查缩进吗? 要我刷新一下吗 53 def dump_mysql 54 period=period 55 @dump

我有一小段Ruby代码,解释器突然开始抱怨。当我运行程序时,我得到:

:85: warning: mismatched indentations at 'end' with 'while' at 75
但是我看不到任何不匹配的while/end 如果我用c选项检查它,我得到:

ruby-cdb_manager.rb
语法正常
那么
-c
到底在做什么呢?它实际上是在检查缩进吗? 要我刷新一下吗

53   def dump_mysql
54    period=period
55    @dump=File.new("#{@tmp_dir}dump.txt","w")
56    query=@db_standard_hash["database_dump_query"]
57    result=@connection.query(query)
58    final=""
59    while run = result.fetch_hash do
60      arr=run.values
61       arr.each do |value|
62        value = "NULL" if value.nil?
63        final << value
64        final << "\t"
65      end
66        final=final.chop
67        final << "\n"
68        @dump.write(final)
69      final = ""
70    end
71    @dump_users=File.new("#{@tmp_dir}dump_second.txt","w")
72    query=@db_standard_hash["users_query"]
73    result=@connection.query(query)
74     final = ""
75     while local = result.fetch_hash do
76      usr_arr=local.values
77       usr_arr.each do |value|
78        final << value
79        final << "\t"
80       end
81        final=final.chop
82        final << "\n"
83        @dump_users.write(final)
84      final = ""
85    end
86   end
53 def dump_mysql
54句号=句号
55@dump=File.new(“{@tmp\u dir}dump.txt”,“w”)
56 query=@db\u标准\u散列[“数据库\u转储\u查询”]
57 result=@connection.query(查询)
58 final=“”
59 while run=result.fetch\u hash do
60 arr=运行值
61 arr.每个do |值|
62 value=“NULL”如果value.nil?

63 final运行程序时,您似乎使用选项
-w
打开警告,但在使用
-c
选项检查语法时,您忽略了该选项。我已将您的代码保存在名为
foo.rb
的文件中:

$ruby-cfoo.rb
语法正常
$ruby-c-w foo.rb
foo.rb:33:警告:“end”处的缩进与23处的“while”不匹配
语法正常

它只是告诉您,与
对应的
关键字
在第23行(在您的示例中为75行)不一致地缩进,实际上它只缩进了一个空格。

Thx,我不知道Ruby解释器的警告是如此准确和严格。