我正在使用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) 目前,当我查看 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,但我不知道如何做到这一点。有人知道怎么做吗?或者有人可以让我朝着正确的方向前进?
谢谢!!!
我正在尝试用js(canvas)编写游戏引擎.到现在为止还挺好.但我有一个问题,我的世界是菱形的,我从上到下渲染瓷砖.
问题是当我的瓷砖大于1个瓷砖(例如2x2)时会发生这种情况:

房子在瓷砖(2,1)上定义.左边的岩石放在(1,0)
首先渲染图块(1,0),然后下一个图块是(2,1),因为它位于同一行和右侧.
你怎么解决这个问题?
如何跳过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 ×2
game-engine ×1
isometric ×1
javascript ×1
mongoid ×1
mongoid4 ×1
php ×1
phpdotenv ×1
rubygems ×1