在文件.yml中将字符串拆分为两行

问题描述:

我需要在文件.yml中将字符串拆分为两行或三行。问题是,如果我试图分裂成两行触发一个错误的最后一个字段描述, 所以我把它一个行在文件.yml中将字符串拆分为两行

one: 
    id: 1 
    bus_company_id: 2 
    seat_type_id: 1 
    description: Butacas 120º de inclinación, 
        calefacción y aire acondicionado, música funcional y video. 

two: 
    id: 2 
    bus_company_id: 2 
    seat_type_id: 2 
    description: Butacas de cuero y paño 120º de reclinación, bandeja de apoyo 
    para pies, calefacción y aire acondicionado, música funcional y video. 

three: 
    id: 3 
    bus_company_id: 2 
    seat_type_id: 4 
    description: Butacas extra ancho de cuero y paño 150º de reclinación, bandeja de apoyo para pies, 
    desayuno, almohada y frazada, sistema de DVD y MP3. 

four: 
    id: 4 
    bus_company_id: 2 
    seat_type_id: 5 
    description: Butacas de cuero 180º reclinación, bandeja de apoyo para pies de 180º de reclinación, cortina divisoria, almohada y frazadas sonido sourround, sistema de DVD y MP3, aire y calefacción, menú a elección de carne, pollo o verdura para su cena. 

这个错误被触发。

[email protected]:~/ProyectoTicketMaster/TicketMaster$ rake db:seed 
rake aborted! 
ActiveRecord::Fixture::FormatError: a YAML error occurred parsing /home/fernando/ProyectoTicketMaster/TicketMaster/test/fixtures/bus_seat_types.yml. Please note that YAML must be consistently indented using spaces. Tabs are not allowed. Please have a look at http://www.yaml.org/faq.html 
The exact error was: 
    Psych::SyntaxError: (<unknown>): could not find expected ':' while scanning a simple key at line 27 column 3 
/home/fernando/.rvm/gems/[email protected]_master/gems/activerecord-3.2.19/lib/active_record/fixtures/file.rb:43:in `rows' 
/home/fernando/.rvm/gems/[email protected]_master/gems/activerecord-3.2.19/lib/active_record/fixtures/file.rb:29:in `each' 
/home/fernando/.rvm/gems/[email protected]_master/gems/activerecord-3.2.19/lib/active_record/fixtures.rb:670:in `block (2 levels) in read_fixture_files' 
/home/fernando/.rvm/gems/[email protected]_master/gems/activerecord-3.2.19/lib/active_record/fixtures/file.rb:20:in `open' 
/home/fernando/.rvm/gems/[email protected]_master/gems/activerecord-3.2.19/lib/active_record/fixtures.rb:669:in `block in read_fixture_files' 
/home/fernando/.rvm/gems/[email protected]_master/gems/activerecord-3.2.19/lib/active_record/fixtures.rb:668:in `each' 
/home/fernando/.rvm/gems/[email protected]_master/gems/activerecord-3.2.19/lib/active_record/fixtures.rb:668:in `read_fixture_files' 
/home/fernando/.rvm/gems/[email protected]_master/gems/activerecord-3.2.19/lib/active_record/fixtures.rb:548:in `initialize' 
/home/fernando/.rvm/gems/[email protected]_master/gems/activerecord-3.2.19/lib/active_record/fixtures.rb:482:in `new' 
/home/fernando/.rvm/gems/[email protected]_master/gems/activerecord-3.2.19/lib/active_record/fixtures.rb:482:in `block (2 levels) in create_fixtures' 
/home/fernando/.rvm/gems/[email protected]_master/gems/activerecord-3.2.19/lib/active_record/fixtures.rb:479:in `map' 
/home/fernando/.rvm/gems/[email protected]_master/gems/activerecord-3.2.19/lib/active_record/fixtures.rb:479:in `block in create_fixtures' 
/home/fernando/.rvm/gems/[email protected]_master/gems/activerecord-3.2.19/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:232:in `disable_referential_integrity' 
/home/fernando/.rvm/gems/[email protected]_master/gems/activerecord-3.2.19/lib/active_record/fixtures.rb:476:in `create_fixtures' 
/home/fernando/ProyectoTicketMaster/TicketMaster/db/seeds.rb:15:in `<top (required)>' 
/home/fernando/.rvm/gems/[email protected]_master/gems/activesupport-3.2.19/lib/active_support/dependencies.rb:245:in `load' 
/home/fernando/.rvm/gems/[email protected]_master/gems/activesupport-3.2.19/lib/active_support/dependencies.rb:245:in `block in load' 
/home/fernando/.rvm/gems/[email protected]_master/gems/activesupport-3.2.19/lib/active_support/dependencies.rb:236:in `load_dependency' 
/home/fernando/.rvm/gems/[email protected]_master/gems/activesupport-3.2.19/lib/active_support/dependencies.rb:245:in `load' 
/home/fernando/.rvm/gems/[email protected]_master/gems/railties-3.2.19/lib/rails/engine.rb:525:in `load_seed' 
/home/fernando/.rvm/gems/[email protected]_master/gems/activerecord-3.2.19/lib/active_record/railties/databases.rake:347:in `block (2 levels) in <top (required)>' 
Tasks: TOP => db:seed 
(See full trace by running task with --trace) 
[email protected]:~/ProyectoTicketMaster/TicketMaster$ 

我想你想使用here描述的换行符格式。看起来你有两种选择,下面是一个使用“>”符号放在一起的简单例子。

parse.rb文件位置:

require 'yaml' 
foo = YAML.load_file('foo.yaml') 
puts foo 

这里是YAML文件的内容:

one_line: one line of text 
two_lines: 
> 
this is a couple lines of text 
here we go... 
final_line: final line of content 

当你通过命令行与ruby parse.rb运行它,你会得到下面的输出:

{"one_line"=>"one line of text", "two_lines"=>"this is a couple lines of text here we go...\n", "final_line"=>"final line of content"} 

希望这是有道理的。我想你只需要添加“>”并将文本移动到下一行。

+0

我学到了一些新东西。非常感谢oraserrata – 2014-12-03 03:57:28