问题标签 [buffalo]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 从 Go 和 C/C++ 代码创建静态二进制文件(使用 cgo)
我正在用 Go 开发一个应用程序,它需要调用我公司的一些 C++ 代码。到目前为止,我已经成功实现了以下目标:
- 编写的 C 包装器,支持 C++ 对象的实例化
- 将我的新 C/C++ 代码编译到共享库中
- 在构建我的 Go 代码时链接共享库
- 在 Docker 映像中构建代码
例如,以下当前有效:
我想减小最终 Docker 映像的大小。我正在使用Buffalo web framework,因此,我正在使用他们的 Docker 映像构建我的应用程序。图像的最终大小(在我包含我团队的库等之后)超过 3 GB。
Buffalo 团队建议将应用程序构建为静态二进制文件,如下所示:
然而,运行这些会给我带来过多的“未定义引用”错误。例如,xerces-c++
我在上面的示例中链接的库提供以下内容:
libcurl4
通过安装viaapt-get install libcurl4
并将其与 链接,我能够消除此错误-lcurl
,但随后它抱怨未定义的引用。它会一直持续下去。
鉴于这种情况,我的问题如下:
- 列出所有像这样的库是实现我想要的必要的邪恶吗?没有更好的选择吗?
- 我可以通过其他方式实现更小的 Docker 映像大小的最终目标吗?
感谢您抽出宝贵的时间。让我知道是否可以提供更多信息以更轻松地解决此问题。
更新:通过使用多阶段构建,我已经能够将最终的 Docker 映像调整到合理的大小(~600MB)。但是,我仍然想知道我原来的问题的答案,所以我暂时不回答这个问题。
postgresql - 如何使 Buffalo 事务中间件提交?
在尝试使用 buffalo-pop/pop/popmwTransaction
中间件时,我没有成功写入数据库。没有返回任何错误,并且调试输出显示了 SQL 语句,但没有提交更新和插入。
处理程序看起来像:
应用程序.go:
如果我DB, _ := pop.Connect("development")
用于我的连接,它可以正常工作。我还观察到,每次点击此处理程序时,表上的自动增量值都会发生变化。
在真实的应用程序中,我们不能调用c.Render
来报告响应代码,因为我们使用gqlgen
的是 http 处理程序。它看起来像这样:
go - 如何在安装 gobuffalo 后修复“/gobuffalo/buffalo/plugins/plugdeps/plugin.go:15:11: undefined: meta.BuildTags”错误
我正在运行 Ubuntu 19.10 和 Go 1.13.4。
我按照此处的说明安装了 gobuffalo:https ://gobuffalo.io/en/docs/getting-started/installation#gnu-linux
运行新命令启动项目后出现错误
我已经尝试卸载并重新安装 buffalo 以及删除我的 go 目录并重新创建所有内容。我还确认我的 $GOPATH 设置正确,它包含在我的 $PATH 中。
buffalo - Windows 上的新 buffalo 项目:找不到模板项/index.html
我正在与某人合作构建 Buffalo 应用程序。他们在 Windows 上,我在 Linux 上。生成模型后,他们在访问列表路由时收到 500 错误:http://localhost:3000/items/
. 该问题与issue 1757非常相似,只是该问题已修复,并且完全相同的源代码在 Linux 和 Mac 上工作。我怀疑这是由于反斜杠而不是正斜杠,但无法确认。通过创建一个新的 buffalo 项目、配置数据库、生成模型然后访问路由,我能够在我的 Windows 上重现这一点。这在 MinGW 和 Powershell 中都失败了。我正在使用 Go 模块 ( GO111MODULE=on
) 并清理了模块缓存、重建buffalo
和buffalo-pop
.
有人可以确认这在 Windows 上有效/失败吗?除了让他们迁移到 Linux 之外,我还能尝试什么?
堆栈跟踪
go - Go Buffalo: ERRO[0000] Error: name buffalodevn is not allowed,尝试不同的应用程序名称
当尝试在我的 Go Path 中启动一个新的 buffalo 项目时,我收到了这个错误,在我的搜索中,我在文档或不同论坛上的其他问题中没有看到任何对这个错误的引用。我尝试了不同形式的不同名称,但我总是得到相同的错误,我不知道为什么。(试过没有水牛的名字)
当我运行 Buffalo Info 时
go - 在测试 buffalo 应用程序期间禁用信息日志
我无法在测试期间禁用 INFO 日志。
有没有办法这样做?
谢谢。
go - 如何更改水牛路由器记录的消息的优先级
为了清楚起见,我更新了问题(根据要求)。
我使用 Buffalo 框架。我在日志中有很多消息,通知 Internet 上的某个人试图到达不存在的端点或使用服务不支持的 HTTP 方法。我认为,这些消息来自 Buffalo 的路由器(绝对不是来自我的代码)。以下是消息示例:“未找到方法:HEAD /some/path”。
问题:如何将这些消息的优先级从“错误”更改为“通知”或“信息”。在我看来,这样的高优先级对于指示客户端错误的消息是一个糟糕的选择,而不是在我的代码中。
原创内容:
为什么像“method not found: HEAD /some/path”这样的消息会以“error”优先级记录?如何将此类消息的优先级更改为“通知”或“信息”?原因:我不喜欢每次互联网上的一些孩子在我的网站上尝试新脚本时都被吵醒。
这是我的路由器配置:
fs
是http.Handler
使用buffalo.WrapHandler()
.
buffalo - 如何用 pop 更新 gobuffalo 模型?
我正在开始一个项目,并且已经检查了 gobuffalo/pop 的用处。
我以前从未在我的 GO 项目中使用过框架。我刚用过,stdlib
而且我也习惯使用 Django。
在 Django 中,创建/更新模型并生成其迁移非常简单。它获取当前的 DjangoModel 并使用更改生成迁移。当我找不到如何用 pop 来做这件事时,这对我来说真是一个惊喜。
我已经检查了文档,但找不到任何示例。
你是怎样做的?
go - 在 Buffalo 中集成 Sentry 和 Elastic APM
我正在尝试使用 Buffalo 将 Elastic APM 和 Sentry 集成到我的网站中。有趣的文件如下:
handlers/sentryHandler.go
handlers/elasticAPMHandler.go
actions/app.go
我遇到的问题是,如果我在顶部有 Sentry/APM 处理程序,那么我会收到类似application.html: line 24: "showPagePath": unknown identifier
. 但是,如果我将其移至设置路由之前,则会收到未找到事务错误。所以,我猜测处理程序包装器正在删除buffalo.Context
信息。那么,除了尝试重新实现它们的包装器之外,我还需要做什么才能在 Buffalo 中集成 Sentry 和 Elastic?
http - Nginx如何使用limit_except + rewrite对HTTP方法进行密码保护
我正在尝试在 nginx 中实现某些目标,但我遇到了困难。基本上我想每次我的 api 收到除 POST 和 PUT 之外的任何 HTTP 方法时都要求输入密码,它在某种程度上起作用,因为尝试发送 GET 时出现密码提示,但未执行重写命令并且 nginx 没有通过返回 404 的 API 的正确路由(如果我不尝试使用 limit_except,则可以正常工作)。
如果有人取得了类似的成就,那将对我有很大帮助!
谢谢 !