gpt4 book ai didi

ruby - 我是否在 sinatra 中正确加载脚本?

转载 作者:太空宇宙 更新时间:2023-11-03 16:54:48 24 4
gpt4 key购买 nike

我以前从未在 sinatra 中做过任何事情,因此决定在一个项目中尝试一下。我对脚本加载的工作方式感到困惑。它似乎是间歇性工作。有时2个脚本/css文件会出现内部服务器错误,有时它们都会有错误。

这是我的 layout.erb :

<!doctype html>

<html>

<head>
<title>An HTML5 box of sand</title>
<meta charset="utf-8" />

<link href='http://fonts.googleapis.com/css?family=Arvo' rel='stylesheet' type='text/css'>

<link rel="stylesheet/less" type="text/css" href="/assets/stylesheets/style.less">

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script><!--loads jquery-->
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.min.js"></script><!--loads jquery ui-->
<script type="text/javascript" src="/assets/js/lib/handlebars.js"></script>
<script src="/assets/js/lib/less-1.3.0.min.js" type="text/javascript"></script>
<script type="text/javascript" src="/assets/js/script.js"></script><!--This is the place where you play!!!-->

</head>

<body>
<%= yield %>
</body>

</html>

我在公共(public)文件夹/public/assets 中有 Assets 文件夹。这很奇怪,因为有时它会加载 assets/js/script.js 文件,而不是加载 handlebars 文件。其他时候它会加载 Handlebars 而不是 script.js 文件。我不确定发生了什么。

~~~~~~~~~~~~~~~~~更新~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~

发现了问题,但不知道如何解决。

所以,似乎是因为我正在使用数据映射器 auto_migrate!方法以某种方式搞砸了 Assets 的加载方式。有什么我可以做的吗?这是我的 app.rb 文件中的内容:

require 'rubygems'
require 'sinatra'
require 'data_mapper'


# Include the models
require './models/User'



# Connect to mysql
DataMapper.setup(:default, "mysql://root@localhost/dev_landing")


#This line is what is messing everything up.
DataMapper.auto_migrate!



set :public_folder, 'public'




get '/' do
erb :home
end

我这样设置数据映射器是因为我在教程中读到这就是如何让它自动创建您在模型中指定的表。有没有更好的方法来执行此操作,以免弄乱我的 scritps 和 css 的加载?

最佳答案

DataMapper.auto_migrate! 删除现有表(如果它们存在)并重新创建它们。

所以调用这个函数意味着:你丢失了所有的数据。 (这就是为什么末尾有一个感叹号,意思是:当心!)如果您的架构仍在大量开发中,我建议您将 DataMapper.auto_migrate! 替换为 DataMapper。自动升级!。它不会删除您的旧数据,而是在尝试保留数据的同时尝试修改基础表。感叹号仍然存在,因为您的数据可能仍会受到轻微损坏,因为在不损坏数据的情况下更改架构并不总是可能的。

还有一点,调用的顺序必须改变。目前是:

  1. 模型定义
  2. DataMapper.Setup
  3. DataMapper.auto_migrate!
  4. 您的路线定义等

但应该是:

  1. DataMapper.Setup
  2. 模型定义
  3. DataMapper.auto_migrate! DataMapper.auto_upgrade!
  4. DataMapper.finalize(你忘了那个)
  5. 您的路线定义等

当 datamapper 出现问题时,错误消息可能很奇怪/具有误导性。顺便说一句,确保没有从您的 View 中调用数据库。这些调用都属于 Controller ,在我看来毫无异常(exception)。这样,您的应用自然会遵循 MVC 模式。 (毕竟 Sinatra 几乎不强制执行任何其他结构......;))

关于ruby - 我是否在 sinatra 中正确加载脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12985536/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com