Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 呼叫Sinatra';s来自Sinatra扩展的DSL方法_Ruby_Web Applications_Module_Sinatra_Modular - Fatal编程技术网

Ruby 呼叫Sinatra';s来自Sinatra扩展的DSL方法

Ruby 呼叫Sinatra';s来自Sinatra扩展的DSL方法,ruby,web-applications,module,sinatra,modular,Ruby,Web Applications,Module,Sinatra,Modular,我有一个模块化的Sinatra应用程序,正在寻找从其他模块内部调用Sinatra API级方法(如get())的最直接的方法。我想西纳特拉扩展就是它,但有些东西不起作用 这是导入所有其他模块的主文件: app/app.rb require 'sinatra/base' Dir[File.join(__dir__, 'articles', '*.rb')].each { |file| require file } module Tir class App < Sinatra::Base

我有一个模块化的Sinatra应用程序,正在寻找从其他模块内部调用Sinatra API级方法(如
get()
)的最直接的方法。我想西纳特拉扩展就是它,但有些东西不起作用

这是导入所有其他模块的主文件:

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 
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
当我运行这个程序时,我得到了#的未定义方法“parse_articles”


什么不在这里?谢谢。

这对我来说似乎是正确的,运行此程序时发生了什么?对不起,我的问题有点误导。不起作用的不是get()方法,而是扩展方法。我已经相应地修改了源代码清单。当我运行上面的程序时,我得到了“未定义的方法`parse#articles'for#”,这对我来说似乎是正确的,运行这个程序时发生了什么?对不起,我的问题有点误导。不起作用的不是get()方法,而是扩展方法。我已经相应地修改了源代码清单。当我运行上面的程序时,我得到了“未定义的方法'parse_articles'for#”