首页 > 解决方案 > 在 Rails 和 Sinatra 应用程序之间共享 Gem

问题描述

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

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

有没有办法计算项目运行的路径,无论它是 Rails 还是 Sinatra 应用程序?有没有一种优雅的方法可以在不使用正则表达式的情况下解决它?

标签: ruby-on-railsrubyruby-on-rails-4sinatra

解决方案


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

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

推荐阅读