Sha256: c3486c5bafb7c384dce39edab1fe743c42eb6dcbec52fe7d82b9152c9ce9b373

Contents?: true

Size: 1.46 KB

Versions: 8

Compression:

Stored size: 1.46 KB

Contents

* 将不同环境的初始化代码放在不同的文件中

  配置文件中往往有多个数据库的多个环境配置,这时候可以使用这里的方法,将不同环境的初始化代码放在不同的文件中来避免冲突。

  假设配置文件中配置了 4 个数据库环境:

  + apollo.dev
  + apollo.prod
  + space.dev
  + space.prod

  那么可以在 =~/.arql.d/= 目录下创建以下文件:

  + apollo.rb
  + space.rb

  在 =apollo.rb= 文件中放置 apollo 项目的初始化代码; 在 =space.rb= 文件中放置 space 项目的初始化代码。

  然后在 =~/.arql.d/init.eb= 文件中写入以下代码:

  #+BEGIN_SRC ruby
    Dir.glob(File.dirname(__FILE__) + '/*.rb').each do |f|
      Arql::App.instance.definitions.each do |env, definition|
        if env.starts_with?(File.basename(f, '.rb'))
          load(f, definition.namespace_module)
        end
      end
    end
  #+END_SRC

  这样,当执行 =arql -e apollo.dev= 或 =arql -e apollo.prod= 时,就会加载 =apollo.rb= 文件中的初始化代码;当执行 =arql
  -e space.dev= 或 =arql -e space.prod= 时,就会加载 =space.rb= 文件中的初始化代码。

   =apollo.rb= 或 =space.rb= 文件中的代码将在对应的 Namespace Module 下执行:

  #+BEGIN_SRC ruby
    class Astronaut
      has_many :missions
    end
  #+END_SRC

  等价于:

  #+BEGIN_SRC ruby
    module Apollo
      class Astronaut
        has_many :missions
      end
    end
  #+END_SRC
  

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
arql-0.4.11 initializer-structure-zh_CN.org
arql-0.4.10 initializer-structure-zh_CN.org
arql-0.4.8 initializer-structure-zh_CN.org
arql-0.4.7 initializer-structure-zh_CN.org
arql-0.4.6 initializer-structure-zh_CN.org
arql-0.4.3 initializer-structure-zh_CN.org
arql-0.4.2 initializer-structure-zh_CN.org
arql-0.4.1 initializer-structure-zh_CN.org