小编San*_*ser的帖子

dotenv在生产时需要.env文件

我正在使用dotenv for PHP来管理环境设置(不是lavarel但我标记了它因为lavarel也使用了dotenv)

我已从代码库中排除了.env,并为所有其他协作者添加了.env.example

在dotenv的github页面上:

phpdotenv适用于开发环境,通常不应用于生产环境.在生产中,应该设置实际的环境变量,以便在每个请求上加载.env文件没有开销.这可以通过使用Vagrant,chef或Puppet等工具的自动部署流程来实现,也可以通过Pagodabox和Heroku等云主机手动设置.

我不明白的是我得到以下异常:

PHP Fatal error: Uncaught exception 'InvalidArgumentException' with message 'Dotenv: Environment file .env not found or not readable.

这与文档中所说的"应该设置实际环境变量以便在每个请求上加载.env文件没有开销"相矛盾.

所以问题是,是否有任何理由为什么dotenv抛出异常和/或我错过了什么?首先,与其他dotenv库(ruby)相比,行为是不同的

我可以轻松地解决这个问题,不太好的解决方案:

if(getenv('APPLICATION_ENV') !== 'production') { /* or staging */
    $dotenv = new Dotenv\Dotenv(__DIR__);
    $dotenv->load();
}
Run Code Online (Sandbox Code Playgroud)

在我看来最好的解决方案,但我认为dotenv应该处理这个问题.

$dotenv = new Dotenv\Dotenv(__DIR__);
//Check if file exists the same way as dotenv does it
//See classes DotEnv\DotEnv and DotEnv\Loader
//$filePath = $dotenv->getFilePath(__DIR__); 
//This method is protected so extract code from method (see below)

$filePath = rtrim(__DIR__, DIRECTORY_SEPARATOR).DIRECTORY_SEPARATOR …
Run Code Online (Sandbox Code Playgroud)

php environment-variables production-environment phpdotenv

10
推荐指数
1
解决办法
2万
查看次数

在 rails 中记录完整的堆栈跟踪,包括所有 gem

目前,当我查看 Rails 应用程序的日志文件时,我得到如下堆栈跟踪:

NoMethodError (undefined method `[]' for nil:NilClass):
  app/controllers/concerns/example.rb:192:in `rescue in create_example'
  app/controllers/concerns/example.rb:163:in `create_example'
  app/controllers/concerns/example.rb:11:in `example'
  app/controllers/example_controller.rb:39:in `create'
Run Code Online (Sandbox Code Playgroud)

该错误是由作为 gem 包含的第二个项目触发的。在 example.rb 的第 192 行(关注)我们使用了包含的 gem 中的一些类,并且在该类中发生了真正的异常。

另一个例子:

ZeroDivisionError (divided by 0):
  app/controllers/dummy_controller.rb:15:in `index'
Run Code Online (Sandbox Code Playgroud)

并在第 15 行

test_object.divide_by_zero
Run Code Online (Sandbox Code Playgroud)

test_object 是包含的 gem 中定义的类的实例

我希望 rails 显示和记录完整的堆栈跟踪,包括所有或特定的 gem,但我不知道如何做到这一点。有人知道怎么做吗?或者有人可以让我朝着正确的方向前进?

谢谢!!!

ruby rubygems ruby-on-rails

6
推荐指数
2
解决办法
1182
查看次数

等距引擎绘图问题

我正在尝试用js(canvas)编写游戏引擎.到现在为止还挺好.但我有一个问题,我的世界是菱形的,我从上到下渲染瓷砖.

问题是当我的瓷砖大于1个瓷砖(例如2x2)时会发生这种情况:

示例渲染

房子在瓷砖(2,1)上定义.左边的岩石放在(1,0)

首先渲染图块(1,0),然后下一个图块是(2,1),因为它位于同一行和右侧.

你怎么解决这个问题?

javascript game-engine isometric

5
推荐指数
1
解决办法
1914
查看次数

跳过mongoid中关系的默认范围

如何跳过mongoid中关系的默认范围?

可转移的关注点在模型上实现了软删除,并添加了以下内容

field :d_at, type: DateTime
default_scope -> { where(d_at: nil) }      
Run Code Online (Sandbox Code Playgroud)

如果一个品牌遭到破坏,我仍然希望在我加载一个引用该品牌的产品时可以使用它们这些是模型定义

class Product
  include Mongoid::Document
  field :title, type: String
  belongs_to :brand, class_name: 'Brand'
end

class Brand
  include Mongoid::Document
  include Concerns::Trashable
  field :title, type: String
end
Run Code Online (Sandbox Code Playgroud)

例:

product = Product.find([id])
puts product.brand.inspect #This brand is soft-deleted and not fetched because of the default scope
Run Code Online (Sandbox Code Playgroud)

这样可行,但它会解决更多问题

class Product
  include Mongoid::Document
  field :title, type: String
  belongs_to :brand, class_name: 'Brand'

  #unscope relation to brand
  def brand 
    Brand.unscoped.find(self.brand_id)
  end
end
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails mongoid mongoid4

1
推荐指数
1
解决办法
1404
查看次数