我创建了一个迁移,运行rake db:migrate,这突破了我的db/schema.rb版本号.然后我做了一个git fetch origin master,看到我的团队成员发生了变化.所以我做了一个git stash和一个git rebase FETCH_HEAD,然后是一个git stash pop.这导致db/schema.rb与版本号冲突.
Upstream>>>
ActiveRecord::Schema.define(:version => 20110930179257) do
===========
ActiveRecord::Schema.define(:version => 20110930161932) do
<<<Stashed
Run Code Online (Sandbox Code Playgroud)
我认为适当的修复方法是手动将版本号增加到高于上游的值.
这是明智的还是坏消息?
谢谢,马克斯
我有两个模型(ModelA和ModelB),每个都有FactoryGirl工厂.我希望ModelB的工厂能够(A)创建测试数据,并且(B)构建(不保存到数据库)样本数据以显示给客户.由于我的模型中的Rails验证,我无法让(A)工作.
MODELA:
class ModelA < ActiveRecord::Base
belongs_to :model_b
validates_presence_of :model_b
end
Run Code Online (Sandbox Code Playgroud)
ModelA工厂:
FactoryGirl.define do
factory :model_a do
some_attr "hello"
model_b { FactoryGirl.build :model_b }
end
end
Run Code Online (Sandbox Code Playgroud)
ModelB
class ModelB < ActiveRecord::Base
has_one :model_a
end
Run Code Online (Sandbox Code Playgroud)
ModelB的工厂
FactoryGirl.define do
factory :model_b do
some_attr "goodbye"
end
end
Run Code Online (Sandbox Code Playgroud)
如果没有验证错误,我无法从这些工厂创建对象:
ruby> FactoryGirl.create :model_a
ActiveRecord::RecordInvalid: Validation failed: ModelB can't be blank
Run Code Online (Sandbox Code Playgroud)
似乎FactoryGirl在保存其关联之前尝试保存工厂对象.我意识到我可以让ModelB的工厂创建其关联的ModelA(而不是构建它) - 然而,我将失去能够使用ModelA工厂来构建样本数据或保存测试数据的灵活性.或者,我可以删除验证; 但后来我没有验证.
还有其他选择吗?
我很高兴在Heroku上使用Rails,就像我可以调整Heroku应用程序的配置属性而无需提交更改xyz.yml和重新部署.
在我的Rails应用程序中完全取消Yaml配置文件会很好,并尽可能地依赖于在ENV中存储配置.这与12因素配置原则一致.
但是,从基于Yaml的配置管理切换到基于Heroku/12因子的配置管理有一些权衡.
希望听到那些在私有应用程序中使用过12因子样式配置的人,以及他们如何在许多部署中管理大量配置变量.
谢谢!
有没有办法从我的.screenrc向GNU Screen窗口发送一系列命令?看起来这应该很容易做到:
.screenrc:
startup_message off
screen -t "RAILS SERVER"
<send command to last created window> <my alias to cd Rails project>
<send command to last created window> rails s
screen -t "RAILS CONSOLE"
<send command to last created window> <my alias to cd to Rails project>
rails c
Run Code Online (Sandbox Code Playgroud)
我已多次浏览屏幕手册,但找不到任何可能的内容<send command to last created window>.
谢谢,马克斯
我使用的是Rails 3.1.0.rc8和Chromium 15.0.874.102.
我想设置CSV下载的文件名.我按照这样做方案,但发现自己无法修改filename的的Content-Disposition头.
这是我的代码:
module ActionController
module CSVHelper
def render_csv options={}
if request.env['HTTP_USER_AGENT'] =~ /msie/i
headers['Pragma'] = "public"
headers['Content-Type'] = "text/plain"
headers['Cache-Control'] = "no-cache, must-revalidate, post-check=0, pre-check=0"
headers['Expires'] = "0"
else
headers['Content-Type'] = "text/csv"
end
filename = generate_filename options.delete(:basename)
headers['Content-Disposition'] = "attachment; filename=#{filename}"
end
def generate_filename basename=nil, suffix="csv"
filename = basename || params[:action]
filename << ".#{suffix}"
filename
end
end
end
Run Code Online (Sandbox Code Playgroud)
在我的控制器中:
respond_to do |format|
format.html
format.csv do
render_csv(:basename => "my_filename")
Rails.logger.debug "HEADERS: #{headers.to_s}" …Run Code Online (Sandbox Code Playgroud) fastercsv content-disposition chromium http-headers ruby-on-rails-3
我已经尝试了Kafka 0.8.2.2和0.9.0.0,并且两者都看到了相同的问题,这是:
我启动一个新的Zookeeper和Kafka服务器(空数据/日志目录),启动"mytopic"的消费者进程,启动"mytopic"的生产者进程,然后通过生产者发送消息.消费者在重新启动之前不会收到消息.
我尝试使用"最早"和"最新"消费者偏移重置策略来配置消费者.
我的问题是 - 这是预期的行为吗?如果是这样,有没有办法改变它.如果没有,这里发生了什么?
给定ActiveRecord :: Base的两个子类,如何实现一个检查是否属于另一个的函数?
def ClazzA < ActiveRecord::Base belongs_to :clazz_b enddef ClazzB < ActiveRecord::Base has_many :clazz_a end
def belongs_to? a, b ... end
谢谢!马克斯
我正在使用google-api-java-client在eclipse中构建一个简单的Android项目.我正在尝试按照本教程启动并运行它.我在SO中搜索了如何将JAR添加到Eclipse中的Android项目的答案.他们中的大多数建议将JAR添加到lib/Android项目内的文件夹中,然后将这些JAR添加到项目的构建路径中.我做了这两件事.该项目编译良好(无论如何,Eclipse不会抱怨任何错误).但是当我在我的模拟器中运行Android应用程序时,ClassDefNotFoundError每当我尝试实例化google-api-java-clientJAR中的任何类时,我都会得到它.例如
new com.google.api.client.http.apache.ApacheHttpTransport();
Run Code Online (Sandbox Code Playgroud)
提高ClassDefNotFoundError.
以下是导致错误的代码:
package com.mycom.android;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.EditText;
public class SearchRunner implements OnClickListener {
private static final String API_KEY = "AIzaSyA1Mg3xWXfoov4HdPUzYY2NwTxuvCev1-E";
private static final String PLACES_SEARCH_URL = "";
@Override
public void onClick(View v) {
EditText editText = (EditText) v;
String searchText = editText.getText().toString();
runSearch(searchText);
}
protected void runSearch(String searchText) {
new com.google.api.client.http.apache.ApacheHttpTransport();
}
}
Run Code Online (Sandbox Code Playgroud)
以下是Eclipse LogCat的更完整输出:
12-21 15:42:11.402: E/dalvikvm(3412): Could not find class …Run Code Online (Sandbox Code Playgroud) 12factor ×1
activerecord ×1
android ×1
apache-kafka ×1
chromium ×1
eclipse ×1
factory-bot ×1
fastercsv ×1
gist ×1
git ×1
github ×1
gnu-screen ×1
heroku ×1
http-headers ×1
migration ×1