Gem 在 Rails 和 Sinatra 应用程序之间共享

Gem shared between Rails and Sinatra applications

我正在编写自己的 gem,它在 Sinatra 应用程序和 Rails 应用程序之间共享。

gem 生成一个记录器,它将写入项目根目录中的默认位置 - “/log/[logger_name]”。 我的问题是我无法计算两个应用程序之间通用的项目根目录。

有没有办法计算项目 运行 来自的路径,无论它是 Rails 还是 Sinatra 应用程序?有没有不使用正则表达式的优雅方法来解决它?

由于 Rails 和 Sinatra 都是基于 Rack 的,我会尝试使用 Rack::Directory.new('').root 获取项目根目录并将其与记录器文件的相对路径连接起来。

project_root = Rack::Directory.new('').root
logger_path = Pathname.new(project_root).join('log/production.log')