ruby-on-rails - 在 Rails 和 Sinatra 应用程序之间共享 Gem
问题描述
我正在编写自己的 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')
推荐阅读
- angular - 初始化 Angular 组件上的变量
- ffmpeg - Ffmpeg 转换为 HLS - 视频质量极低
- javascript - React Native 组件不能使用 super
- string - 将字符串转换为任何其他原始类型的惯用方式
- docker - 重新连接到由于 ssh 断开而分离的 docker 容器
- xcode - 未找到建筑的符号
- javascript - Coveo 加载更多功能
- collapse - 在列上的字段选项中添加数组值并在 responsiveLayoutCollapseFormatter-Tabulator 上使用
- jquery - jquery tab wcag 可访问性:给定元素不允许角色表示;确保角色属性具有适合元素的值
- xamarin - 如何检测 Xamarin 表单中启用和禁用的 GPS