【metabase二次开发 • 五】Clojure踩坑实录

启动相关

lein ring server启动失败

  • 【问题】lein run能正常启动,lein ring server启动报错
    Syntax error (AssertionError) compiling at (/private/var/folders/0x/b3mhp5j52xg75qyb5h4xcph00000gn/T/form-init659192222195232290.clj:1:124).
    Assert failed: self-referential dependency 
    (not (= x dep))
    

    解决方案

    • 代码中存在命名空间依赖循环导致,但clojure不会提醒你哪里循环了,需要自己去排查,我查出来是在 metabase.api.table 中再次 require 了 [metabase.api.table]

lein ring server加载driver失败

  • 【问题】lein run 一切正常,但使用lein ring server时,启动正常,用户配置等不查询数据的接口也调用正常,但只要查询数据图表就报错,无法查看数据
     [{:type java.lang.IllegalArgumentException,
       :message "No implementation of method: :write-body-to-stream of protocol: #'ring.core.protocols/StreamableResponseBody found for class: metabase.async.streaming_response.StreamingResponse",
       :at [clojure.core$_cache_protocol_fn invokeStatic "core_deftype.clj" 583]}]
    
  • 解决中

翻译组件加载失败

  • 【问题】lein run/lein ring server 均能正常启动和使用,但只要更改语言就会报错,只能使用英文,其它语言都用不了
    ERROR i18n.impl :: Error translating to zh: no resource bundle
    

    解决方案

    • 出错原因是因为程序在加载翻译文件时发现文件不存在,所以报错;
    • 手动运行bin/i18n/build-traslation-frontend-resource,重新生成一次翻译文件即可;
    • 如果运行过程中报错gfmt: command not found,需要安装 gettext
      MAC通过 brew install gettext 安装,Linux通过 apt-get install gettext 安装

接口调用相关

postman接口调不通

  • 【问题】postman能调用接口,但显示权限不足

    解决方案:

    • 最粗暴的方法是到代码中将 +auth(check-self-or-superuser id) 语句注释掉
    • 更好的方案是修改postman中的header
      1.增加 Cookie 并复制最新Cookie(后端通过cookie解析用户并验证权限)
      2.修改 AcceptContent-Type 为 application/json
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
Metabase是一种开源的业务智能(BI)工具,具备丰富的数据分析和可视化功能。作为一个强大的BI工具,Metabase也提供了二次开发的功能,使用户可以根据自己的需求进行定制和扩展。 Metabase二次开发工具包括以下几个方面: 1. Metabase API:Metabase提供了强大的API,可以通过编程方式对Metabase进行定制和扩展。开发人员可以使用API来获取数据、创建和修改问题(queries)、设置图表和仪表盘等。通过使用API,用户可以更精确地控制Metabase的功能。 2. 使用自定义查询:Metabase支持使用SQL进行查询,用户可以利用自己熟悉的数据库查询语言进行复杂查询。通过编写自定义查询语句,用户可以在Metabase中实现更复杂的数据分析和报表需求。 3. 自定义数据可视化:Metabase提供了多种图表类型和可视化效果,但有时可能无法完全满足用户的需求。用户可以通过定制CSS来自定义图表的样式和外观,以实现更好的数据可视化效果。 4. 自定义插件和扩展:Metabase还支持开发者通过创建插件或扩展,来增加新的功能和特性。通过插件机制,用户可以将自己开发的功能集成到Metabase中,以满足特定的业务需求。 Metabase二次开发工具使开发人员能够根据具体业务需求对Metabase进行定制和扩展。无论是通过API进行编程,使用自定义查询语句,定制数据可视化,还是通过插件和扩展添加新功能,Metabase都提供了丰富的扩展性和灵活性,使用户能够深度定制、个性化地使用Metabase进行数据分析和可视化。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值