Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.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 on rails 如何使sinatra应用程序在rails 4中运行?_Ruby On Rails_Ruby_Ruby On Rails 4_Sinatra - Fatal编程技术网

Ruby on rails 如何使sinatra应用程序在rails 4中运行?

Ruby on rails 如何使sinatra应用程序在rails 4中运行?,ruby-on-rails,ruby,ruby-on-rails-4,sinatra,Ruby On Rails,Ruby,Ruby On Rails 4,Sinatra,我有一个Sinatra应用程序,我想开始在Rails中构建新功能,同时仍然支持现有的Sinatra功能。我尝试了以下策略: sinatra的rackup将一些请求路由到rails,另一些路由到sinatra sinatra的机架包括导轨 rails的货架包括sinatra 我的许多搜索结果都是rails 3,而不是rails 4。此外,Rails是否必须生成db,而不是使用Sinatra正在使用的db(在本例中,使用Sequel gem访问Sqlite3)。一般来说,我得到的错误是关于gem和路

我有一个Sinatra应用程序,我想开始在Rails中构建新功能,同时仍然支持现有的Sinatra功能。我尝试了以下策略:

  • sinatra的rackup将一些请求路由到rails,另一些路由到sinatra
  • sinatra的机架包括导轨
  • rails的货架包括sinatra
  • 我的许多搜索结果都是rails 3,而不是rails 4。此外,Rails是否必须生成db,而不是使用Sinatra正在使用的db(在本例中,使用Sequel gem访问Sqlite3)。一般来说,我得到的错误是关于gem和路径的。(尽管我重新引导并尝试了不同版本的路径。)


    在仍然支持现有Sinatra应用程序的情况下,对使用Rails 4的最佳方式有何建议

    Rails不需要创建数据库,甚至不需要直接使用数据库。要生成不带ActiveRecord的新Rails应用程序,请运行
    Rails新应用程序\u PATH——跳过活动记录。然后,不要直接从Rails应用程序使用数据库,而是向Sinatra应用程序发送请求,让Sinatra应用程序控制所有与数据库相关的内容。

    我认为Rails 3和Rails 4之间的Rails/Rack集成代码没有太大变化,所以您应该没事。更详细地解释了您可以为Rails应用程序创建一个如下所示的
    config.ru
    文件:

    require ::File.expand_path('../config/environment',  __FILE__)
    
    use Rack::Debugger
    use Rack::ContentLength
    run Rails.application
    
    然后运行
    rackup config.ru
    将启动运行rails应用程序的机架服务器

    答案指出,如果您从机架上运行Rails和Sinatra,而不是将Sinatra应用程序安装在Rails的
    routes.rb
    文件中,则对Sinatra应用程序的请求根本不会通过Rails。答案还显示,在您的
    config.ru
    中,您应该能够做到这一点,以支持您的Sinatra和Rails应用程序:

    map "/" do
      run RailsApp::Application
    end
    
    map "/url1" do
      run SinatraApp1
    end
    
    当然,您必须修改路由和应用程序名称,以符合您的需求和应用程序


    我建议先让你的应用程序运行一个config.ru,然后再问另一个有关数据库的问题,详细说明你希望数据库设置是什么,以及你收到的确切错误消息是什么。

    谢谢。我实现了这个错误,现在一直得到这个错误:RuntimeError位于/rails,您必须在应用程序的配置中设置config.secret\u key\u base。(我在application.rb中设置了一个密钥。)