问题描述
我有一个模块化的Sinatra应用程序,正在寻找从其他模块内部调用Sinatra API级别方法(例如get()
)的最直接方法。我以为可以使用Sinatra扩展名,但是有些地方不起作用。
这是导入所有其他模块的主文件:
app / app.rb
require 'sinatra/base'
Dir[File.join(__dir__,'articles','*.rb')].each { |file| require file }
module Tir
class App < Sinatra::Base
register Sinatra::Blog
get '/articles' do
articles = parse_articles('articles/*.mdown')
end
end
end
app / articles / blog.rb
module Sinatra
module Blog
ARTICLES = []
def parse_articles(dir)
Dir.glob(dir) do |file|
article = initialize_article file
if article.ready?
generate_path(article)
ARTICLES << article
end
end
end
def generate_path(article)
get("/#{article.relative_path}") do
erb :'articles/article',:locals => { :article => article },:layout => :'articles/layout_article'
end
end
end
register Blog
end
config.ru
require 'rubygems'
require 'bundler'
Bundler.require
require_relative 'app/app'
run Tir::App
运行此命令时,我得到undefined method 'parse_articles' for #<Tir::App:0x00007f9b6536c5d8>
。
这里不对吗?谢谢。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)