2012-08-04 73 views
0

我正在开发一个Sinatra应用程序。为了简化未来支持的结构,我添加了一些定制类,位于单独的文件中。我想要做的是让他们使用现有的助手和sinatra自己的功能(模型,会话等),而不必重复代码。与Sinatra一起使用自定义类

例如,我有一个帮手to_html(文本),我想在sinatra路线和我自己的类中使用它,这些类也在路径中使用。

我的sinatra应用程序是写在经典风格(如果它对你的建议很重要)。

可能吗?

+0

我想你只需要在用于运行服务器的主文件中的'require'sinatra''后面加上'require'my_class''。 – 2012-08-04 12:46:13

+0

不,它没有看到帮助器方法: NameError - 未定义的局部变量或方法'current_user' – mie 2012-08-04 13:01:29

+1

请提供一个最小的代码示例,展示您描述的问题。 – 2012-08-04 14:19:49

回答

0

假设您在项目的根目录中有一个助手目录,您可以在用于运行服务器的应用程序文件内部执行此类操作。

%w(helpers).each { |p| Dir[File.join(File.dirname(__FILE__), p, "*.rb")].each { |file| require file } } 

您将需要包括您的路线下面这个工作。为了使它更清洁,你也可以有一个routes/controllers目录。只需简单地将“路线”添加到该阵列中即可:

%w(helpers routes).each { |p| Dir[File.join(File.dirname(__FILE__), p, "*.rb")].each { |file| require file } } 

这将要求您的所有帮手都是您的路线。

相关问题