ruby – Sinatra方法`开发?`undefined
发布时间:2020-12-17 03:24:16 所属栏目:百科 来源:网络整理
导读:Sinatra博士说发展?在环境开发时会返回true,但是我收到一个错误,说明方法开发?未定义. 我试着跳过速记并测试ENV [‘RAKE_ENV’]变量本身,但它只是零. 这是我得到的错误: undefined method `development?' for main:Object (NoMethodError) 这是触发错误的
Sinatra博士说发展?在环境开发时会返回true,但是我收到一个错误,说明方法开发?未定义.
我试着跳过速记并测试ENV [‘RAKE_ENV’]变量本身,但它只是零. 这是我得到的错误: undefined method `development?' for main:Object (NoMethodError) 这是触发错误的代码: require 'dm-sqlite-adapter' if development? 我正在使用模块化风格的应用程序.上面的行是一个单独的文件,只管理模型.这是怎么回事? 解决方法
我也在努力解决这个问题.这是我沿途发现的.
您需要在“内部”继承自Sinatra :: Base的类(例如继承自Base的Sinatra :: Application)才能使用该开发?方法,在base.rb中定义. 在经典的Sinatra应用程序中,您已经在“内部”编写了一个继承自Sinatra :: Base的类.那么发展呢?只会在“任何地方”工作. 在模块化的Sinatra开发中?只能在Sinatra :: Base子类中使用,例如: require 'sinatra/base' # Placing # require 'dm-sqlite-adapter' if development? # here will not work. class ApplicationController < Sinatra::Base require 'dm-sqlite-adapter' if development? # But here it works ... end # Placing # require 'dm-sqlite-adapter' if development?` # AFTER the above class will still not work class SomethingElse # nor will `development?` work here,since it is called inside # a class without Sinatra::Base inheritance ... end 所以基本上你可以使用继承自Sinatra :: Base的ApplicationController类,并在这里检查开发?从ApplicationController类继承的子类也是如此: class UserController < ApplicationController require 'dotenv' if development? ... end 对于模块化的Sinatra,在(主要:对象)代码文本“外部”Sinatra :: Base子类中,您需要遵循Arup’s指令: if Sinatra::Base.environment == :development require 'awesome_print' require 'dotenv' Dotenv.load ... end (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |