我是Rails的新手,我正在尝试部署我的第一个项目.我正在使用rails 3,ruby 1.8.7,Passanger,Mysql和Git
我按照很多教程来学习使用capistrano进行部署,并且有一个我无法弄清楚的问题.在教程中他们从不谈论schema.rb如果这个文件负责我已经完成的迁移以及我们部署应用程序时,capistrano将所有文件复制到"当前"文件夹(schema.rb to),它怎么能在生产服务器上进行正确的迁移.我应该告诉capistrano为"current"文件夹制作一个simlink到正确的schema.rb文件吗?如果是的话我该怎么做?TNKS.
我使用rvm ruby1.9.2p0和rails 3.0.1在我的机器上创建了一个新应用程序,并执行了以下操作:
rails new -J -d mysql appname
git init
git add .
git commit
heroku create
Run Code Online (Sandbox Code Playgroud)
并创建了应用程序.但当我这样做时:
heroku rake db:create --trace
Run Code Online (Sandbox Code Playgroud)
我明白了:
Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
Couldn't create database for {"reconnect"=>false, "encoding"=>"utf8", "username"=>"root", "adapter"=>"mysql2", "database"=>"app_production", "pool"=>5, "password"=>nil, "socket"=>"/var/run/mysqld/mysqld.sock"}, charset: utf8, collation: utf8_unicode_ci
(in /app)
** Invoke db:create (first_time)
** Invoke db:load_config (first_time)
** Invoke rails_env (first_time)
** Execute rails_env
** Execute db:load_config
** Execute db:create
Run Code Online (Sandbox Code Playgroud)
当我这样做:heroku rake db:migrate --trace,然后跟踪有如下行:
/app/.bundle/gems/ruby/1.8/gems/rake-0.8.7/lib/rake.rb:590:in
Run Code Online (Sandbox Code Playgroud)
这表明它使用的是红宝石1.8而不是红宝石1.9.2
如何在我的heroku应用程序上创建数据库并使其使用ruby …
我有一个布尔表达式的问题,当我做了一个logger.debug我得到了奇怪的结果,所以我将我的日志代码简化为以下内容,并且惊讶地看不到任何'false'被打印.
在我的控制器中记录代码:
logger.debug 'true'
logger.debug true
logger.debug
logger.debug 'false'
logger.debug false
logger.debug
logger.debug '1 == 1'
logger.debug 1 == 1
logger.debug
logger.debug '1 == 0'
logger.debug 1 == 0
Run Code Online (Sandbox Code Playgroud)
其中打印出以下内容
true
true
false
1 == 1
true
1 == 0
Run Code Online (Sandbox Code Playgroud)
......?我希望看到错误.当我在控制台中运行'1 == 0'或'put false'时,我得到了错误.我错过了什么吗?
任何想法为什么不打印'假'?
ruby版本:1.8.7-p352
rails版本:2.3.2
我正在做以下查询......
Status.where(:status => params[:cat_id])
Run Code Online (Sandbox Code Playgroud)
但是我想通过created_at列来排序结果.我尝试过所有符合逻辑的东西
Status.where(:status => params[:cat_id]), :order => "created_at DESC"
Run Code Online (Sandbox Code Playgroud)
和
Status.where(:status => params[:cat_id], :order => "created_at DESC")
Run Code Online (Sandbox Code Playgroud)
但似乎没什么用.
订购结果的最佳方法是什么?
非常感谢任何帮助,谢谢!
我一直在寻找这个问题的答案超过一天,并彻底搜索了StackOverflow.
我理解正在发生的冲突,我应该卸载我不需要的Rack版本,但这就是问题所在.我正在开发Koding(http://koding.com),我无法访问系统级宝石.
Rails之前正在工作,我安装了mongo gem,删除了它,并安装了mysql2 gem.
bash4.1$ rails
/usr/lib/ruby/site_ruby/1.8/rubygems.rb:233:in `activate': can't activate rack (~> 1.4.0, runtime) for ["actionpack-3.2.11", "railties-3.2.11"
], already activated rack-1.5.0 for ["rack-ssl-1.3.2", "railties-3.2.11"] (Gem::LoadError)
from /usr/lib/ruby/site_ruby/1.8/rubygems.rb:249:in `activate'
from /usr/lib/ruby/site_ruby/1.8/rubygems.rb:248:in `each'
from /usr/lib/ruby/site_ruby/1.8/rubygems.rb:248:in `activate'
from /usr/lib/ruby/site_ruby/1.8/rubygems.rb:249:in `activate'
from /usr/lib/ruby/site_ruby/1.8/rubygems.rb:248:in `each'
from /usr/lib/ruby/site_ruby/1.8/rubygems.rb:248:in `activate'
from /usr/lib/ruby/site_ruby/1.8/rubygems.rb:1082:in `
from /usr/bin/rails:18
Run Code Online (Sandbox Code Playgroud)
我已经擦干了我的目录,尝试使用RVM,但仍然没有.有任何想法吗?
谢谢!
我想使用find_by_sql方法代替活动记录查询接口,因为我在编写自己的SQL时具有灵活性.
例如,
在SQL中,将查询中的表从最小到最大排序,这被认为是一种很好的做法.使用活动记录查询界面时,您必须从可能是最大表的结果模型开始.
我还可以通过在连接本身中包含目标表并包含多个表中所需的列来轻松避免N + 1问题.
我想知道是否有理由我不应该使用find_by_sql选项,特别是当我将编写ANSI SQL时,它应该与所有(如果不是大多数)数据库兼容.
谢谢!
我有一个排序数组(唯一值,不重复).
我知道我可以使用Array#binarysearch但它用于查找值而不是删除它们.我也可以删除O(log n)的值吗?怎么样?
让我们说我有这个数组:
arr = [-3, 4, 7, 12, 15, 20] #very long array
Run Code Online (Sandbox Code Playgroud)
我想删除值7.到目前为止,我有这个:
arr.delete(7) #I'm quite sure it's O(n)
Run Code Online (Sandbox Code Playgroud)
假设Array#delete-at在O(1)处工作.我能做到arr.delete_at(value_index)
现在我只需要获取值的索引.二进制搜索可以做到这一点,因为数组已经排序.但是利用排序属性(我所知道的)的唯一方法是返回值的二进制搜索,而不是删除或返回索引.
把它们加起来:
1)如何在O(log n)处从已排序的非重复数组中删除值?
要么
2)假设数组#lele-at在O(1)处工作(是吗?),如何在O(log n)处获取值的索引?(我的意思是数组已经排序了,我必须自己实现吗?)
谢谢.
我想让我的rails控制器更灵活,并尝试为它创建一些Meta foo.
我有redirect_to方法的问题.我可以从字符串转换"edit_admin_post_path()"方法或更好地读出控制器名称并动态传递它吗?
这是我的Admin :: Posts控制器中的"post"代码.
respond_to do |format|
format.html { redirect_to(edit_admin_post_path(@object)) }
end
Run Code Online (Sandbox Code Playgroud)
谢谢!
我在字符串字段(VARCHAR(255))中输入了5kb文本并收到此错误:
Mysql2::Error: Data too long for column 'title' at row 1: INSERT INTO `posts`....
Run Code Online (Sandbox Code Playgroud)
解决此问题的最佳方法是什么?
我应该在模型中的before_save中将此文本剪切为255吗?
或者在控制器中修复params [:that_field]?
还有其他方法吗?
我正在尝试将网页调整为Facebook标签,我为标签创建了新页面并从目标网页加载内容,一切顺利,问题是我无法重新调整此内容的大小以适应810px.
HTML:
<html>
<head>
<meta charset='utf-8'>
<link rel="stylesheet" type="text/css" href="css/style.css">
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/facebook-tab.js"></script>
</head>
<body>
<div id="facebook-contant">
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
jQuery的:
$(document).ready(function(){
$( "#facebook-contant" ).load('recommendations.html #rec-board-holder');
});
Run Code Online (Sandbox Code Playgroud)
任何建议如何更改负载内容大小?