获取语法错误:期望令牌'EOF',而不是'结束',并找不出原因

问题描述:

所以,我试图实现一种方法来添加数据库迁移没有ORM/ODM为我的SQLite3数据库和错误我得到(syntax error: expecting token 'EOF', not 'end')是这个代码:获取语法错误:期望令牌'EOF',而不是'结束',并找不出原因

src/project/database/migration/migrations/1.cr

require "../migration" 

module Project 
    ver = 1 
    migration = Migration.new ver 

    migration.register_up |db| do 
    db.exec "create table version (version int)" 
    db.exec "insert into version values (?)", ver 
    end 

    migration.register_down |db| do 
    db.exec "drop table version" 
    end 

    Migrations[ver] = migration 
end 

我看不出与语法的紧迫问题。该文件导入下面的文件,因为它需要的类和线Migrations = [] of Migration

src/project/database/migration/migration.cr

require "db" 
require "sqlite3" 

module Project 

    Migrations = [] of Migration 

    class Migration 
    def initialize(@version : Int) 
    end 

    # Registers a callback that will be called when the `up`-method is called. 
    # The callback must return either `true` for a successful migration, 
    # or `false` for a failed migration. If an `up` migration has 
    # failed, the `down` migration will be called to restore the database 
    # back to its previous state. 
    # The callback will receive an instance of `DB::Database` 
    # 
    # Example: 
    # 
    # ``` 
    # migration = Migration.new(1) 
    # 
    # migration.register_up |db| do 
    # # Advance migration 
    # end 
    # 
    # migration.register_down |db| do 
    # # Recede migration 
    # end 
    # ``` 
    def register_up(&block : (DB::Database) -> Bool) 
     @up = block 
    end 

    # Registers a callback that will be called when the `down`-method is called. 
    # See the `register_up` method for more information 
    def register_down(&block : (DB::Database) -> Bool) 
     @down = block 
    end 

    # Advances DB to the next version 
    def up(conn : DB::Database) 
     result = @up.call(conn) 
     unless result 
     # Failed migration, rollback 
     @down.call(conn) 
     raise Exception.new(`Failed to migrate database to version: #{@version}. Rolling back.`) 
     end 
    end 

    # Recedes DB to the previous version 
    def down(conn : DB::Database) 
     result = @down.call(conn) 
     unless result 
     # Failed migration, rollback 
     @up.call(conn) 
     raise Exception.new(`Failed to migrate database to version: #{@version - 1}. Rolling back.`) 
     end 
    end 
    end 

end 

任何想法?

语法错误是在这里:

migration.register_up |db| do 
    # ... 
end 

应该是:

migration.register_up do |db| 
    # ... 
end 

而且在register_down相同。

请参见Blocks and Procs中的“Yield arguments”部分。