sql_query, ruby gem 使用ERB从 `.sql.erb` 模板加载SQL查询

分享于 

5分钟阅读

GitHub

  繁體 雙語
Ruby gem to load SQL queries from `.sql.erb` templates using ERB.
  • 源代码名称:sql_query
  • 源代码网址:http://www.github.com/sufleR/sql_query
  • sql_query源代码文档
  • sql_query源代码下载
  • Git URL:
    git://www.github.com/sufleR/sql_query.git
    Git Clone代码到本地:
    git clone http://www.github.com/sufleR/sql_query
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/sufleR/sql_query
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    

    Gem VersionDependency StatusCode ClimateTest CoverageBuild Status

    sql

    使用ERB从模板加载SQL查询的ruby gem。

    它使使用语法突出显示的纯SQL更加容易。

    让我们从SQL字符串清除你的ruby 代码。

    支持的扩展:.sql.erb 或者 .erb.sql

    安装

    将此行添加到你的应用程序的Gemfile中:

     
    gem 'sql_query'
    
    
    
     

    然后执行:

     
    $ bundle
    
    
    
     

    或者将它的自己安装为:

    
    $ gem install sql_query
    
    
    
    

    用法

    app/sql_queries 目录中的文件中创建SQL查询

    # app/sql_queries/get_player_by_email.sql.erbSELECT*FROM playersWHERE email =<%= quote @email %>

    quote 方法是 ActiveRecord.connection.quote 方法的别名。 你可以用它来过滤你的变量。

    你可以像这样使用 SQL:

    > query =SqlQuery.new(:get_player_by_email, email:'e@mail.dev')> query.execute
     (0.6ms) SELECT*FROM players WHERE email ='e@mail.dev'=> []> query.explain
    => EXPLAINfor:SELECT*FROM playersWHERE email ='e@mail.dev'QUERYPLAN----------------------------------------------------------SeqScan on players (cost=0.00..2.14 rows=1 width=5061)
     Filter: ((email)::text ='e@mail.dev'::text)
    (2 rows)> query.sql
    => "SELECT *nFROM playersnWHERE email = 'e@mail.dev'n"> query.pretty_sql
    => SELECT*FROM playersWHERE email ='e@mail.dev'

    初始化

    如果你需要像 player/get_by_email 这样的嵌套路径,只需使用字符串而不是文件名作为文件名。

    例如:

    SqlQuery.new('player/get_by_email', email:'e@mail.dev')
    特殊选项
    • db_connection - 如果要更改与数据库的默认连接,可以使用这里选项执行每个查询执行的默认连接。
    • sql_file_path - 它将覆盖 gem 将查找sql文件的默认路径。

    方法

    • 执行 - 执行查询并返回结果数据。 它接受布尔参数。当参数为 false 时,它将运行原始sql查询而不是 prepared_for_logs。
    • 解释 - 运行模板中的SQL解释
    • SQL - 返回SQL字符串
    • pretty_sql - 返回更漂亮的SQL字符串,在控制台中阅读
    • prepared_for_logs - 返回不带换行符和多个空格的sql字符串。

    配置

    # config/initializers/sql_query.rbSqlQuery.configure do |config|
     config.path ='/app/sql_templates' config.adapter =ActiveRecord::Baseend
    配置选项
    • 路径- 如果你不喜欢查询的默认路径,你可以在这里更改。

    • 适配器- 实现连接方法的类。

    部分

    可以在部分文件中准备部分sql查询,并在多个查询中重用它。

    部分文件应该以'_'开头。

    例如:

    # app/sql_queries/_email_partial.sql.erbplayers.email=<%= quote @email %>

    并使用这种部分:

    SELECT*FROM playersWHERE<%= partial :email_partial %>

    示例

    检查示例文件夹中一些有用的查询。

    如果你有一些示例要共享,请发出请求请求。


    TEMP  template  GEM  queries  ERB