我之前看到过这个问题,但仅限于rspec.我还没有进行测试,因为它对我来说太进步了,但有一天我会尽快!:P
当我尝试使用我的应用注册/登录时出现此错误.我不知道在哪里修理它.我使用devise来创建我的用户,并使用omniauth2来登录谷歌.
这是错误
ActiveRecord::StatementInvalid at /users/auth/google_oauth2/callback
PG::UndefinedTable: ERROR: relation "users" does not exist
LINE 5: WHERE a.attrelid = '"users"'::regclass
^
: SELECT a.attname, format_type(a.atttypid, a.atttypmod),
pg_get_expr(d.adbin, d.adrelid), a.attnotnull, a.atttypid, a.atttypmod
FROM pg_attribute a LEFT JOIN pg_attrdef d
ON a.attrelid = d.adrelid AND a.attnum = d.adnum
WHERE a.attrelid = '"users"'::regclass
AND a.attnum > 0 AND NOT a.attisdropped
ORDER BY a.attnum
Run Code Online (Sandbox Code Playgroud)
我试过rake db:migrate,但它已经创建,在架构表中存在用户.有没有人以前得到这个错误?
database.yml的
# gem install pg -- --with-pg-config=/opt/local/lib/postgresql84/bin/pg_config
# On Windows:
# …Run Code Online (Sandbox Code Playgroud) 我正在将我正在使用的现有rails项目导入到我的新arch linux系统中,我已经正确安装了所有gems和postgresql,但是在运行时遇到了一些问题:
rake db:create
Run Code Online (Sandbox Code Playgroud)
我收到以下错误
PGError: ERROR: new encoding (UTF8) is incompatible with the encoding of the template database (SQL_ASCII)
HINT: Use the same encoding as in the template database, or use template0 as template.
: CREATE DATABASE "System_test" ENCODING = 'unicode'
Run Code Online (Sandbox Code Playgroud)
我使用正确的编码手动创建了数据库,并且迁移运行良好,但我可以运行
rake db:test:clone
Run Code Online (Sandbox Code Playgroud)
命令因为它尝试创建数据库,我不想手动创建数据库.那么,有人知道解决这个问题吗?
问候
编辑:这是我的database.yml
development:
adapter: postgresql
encoding: unicode
database: System_development
pool: 5
username: forellana
password:
test: &test
adapter: postgresql
encoding: unicode
database: System_test
pool: 5
username: forellana
password:
cucumber:
<<: *test
Run Code Online (Sandbox Code Playgroud)
这是命令的完整输出
(in /home/fespinoza/Workspace/TLI)
PGError: …Run Code Online (Sandbox Code Playgroud) 我有这个简单的rake任务拒绝运行.我只是不明白为什么它看起来正确.谁可以指出我可能非常简单的错误?谢谢!
/lib/tasks/reindex.rb:
namespace :db do
desc "Tire reindex profiles"
task :reindex => :environment do
system "cd #{Rails.root} && rake environment tire:import CLASS='Profile' FORCE=true"
end
end
Run Code Online (Sandbox Code Playgroud)
错误:
rake db:reindex
rake aborted!
Don't know how to build task 'db:reindex'
Run Code Online (Sandbox Code Playgroud) 我想定义一个Ruby(1.9.2)-on-Rails(3.0.5)rake任务,它将用户添加到User表中.该文件如下所示:
#lib/tasks/defaultuser.rake
require 'rake'
namespace :defaultuser do
task :adduser do
u=User.new
u.email="bob@example.com"
u.password="password"
u.save
u.errors.each{|e| p e}
end
end
Run Code Online (Sandbox Code Playgroud)
然后我会调用任务为
> rake defaultuser:adduser
Run Code Online (Sandbox Code Playgroud)
我测试了Rails控制台中的adduser任务中的代码,它运行正常.我测试了rake任务,只运行
print "defaultuser:adduser"
Run Code Online (Sandbox Code Playgroud)
在任务的主体,它工作得很好.
然而,当我把它们结合起来时,它抱怨道,说道
rake aborted!
uninitialized constant User
Run Code Online (Sandbox Code Playgroud)
我试过了
require File.expand_path('../../../app/models/user.rb', __FILE__)
Run Code Online (Sandbox Code Playgroud)
在rake文件中的命名空间定义之上,但是没有用.我有
rake aborted!
ActiveRecord::ConnectionNotEstablished
Run Code Online (Sandbox Code Playgroud)
我需要做什么才能在Rails控制台的Rake任务中对User模型类具有相同的访问权限?
我运行rake任务时是否执行了config/initializers的脚本?
我见过一个例子,其中一个任务有参数和一个依赖任务,如:
task :name, [:first_name, :last_name] => [:pre_name] do |t, args|
args.with_defaults(:first_name => "John", :last_name => "Dough")
puts "First name is #{args.first_name}"
puts "Last name is #{args.last_name}"
end
Run Code Online (Sandbox Code Playgroud)
如果它是一个任务依赖项,你将如何将参数传递给name任务:
task :sendLetter => :name
#do something
end
Run Code Online (Sandbox Code Playgroud) 我有一个需要运行我的数据的脚本.我为此做了一个rake任务.如果我通过使用启动rake任务,heroku run rake my_task:my_action并在一段时间后我的互联网断开连接.会发生什么.任务是否会继续运行,因为它已在远程计算机上启动.我认为它会继续运行.有任何想法吗.
我在rails应用程序中有rake任务.我想在rake任务中运行命令行命令.我怎样才能做到这一点.我试过以下但失败了
desc "Sending the newsletter to all the users"
task :sending_mail do
run "cd #{RAILS_ROOT} && ar_sendmail -o -t NewsLetters -v"
system "cd #{RAILS_ROOT} && ar_sendmail -o -t NewsLetters -v &"
end
Run Code Online (Sandbox Code Playgroud)
上面的run命令抛出run方法undefined&System命令没有抛出任何错误但没有执行.
我有这个奇怪的问题,如果我这样做:
namespace :xaaron do
task :get_roles do
roles = Xaaron::Role.all
puts roles
end
task :get_role, [:name] do |t, args|
role = Xaaron::Role.find(args[:name].parameterize)
puts role
end
end
Run Code Online (Sandbox Code Playgroud)
第一项任务将完美无缺.我甚至可以放在binding.pry一边做,Xaaron::Role并获得有关角色的信息.但第二项任务爆炸说明NameError: uninitialized constant Xaaron::Role
我在我的主应用程序中运行每个任务(因为这些任务在引擎内)为:bin/rake xaaron:get_roles和bin/rake xaaron:get_role.
为什么第二个爆炸但第一个不爆炸?是否存在争论的事情?
更新
我应该注意,我可以bin/rails c在使用所述引擎的主应用程序中执行,Xaaron::Role并获取有关Roles表的信息.
我希望能够为我必须从另一个任务调用的任务传递参数
不带参数的调用对我来说是这样的:
Rake::Task["mytask1"].invoke
Run Code Online (Sandbox Code Playgroud)
但是,对于这样的参数,它不会:
Rake::Task["mytask1[1,v18_0,20141230]"].invoke
Run Code Online (Sandbox Code Playgroud)
谢谢
rake-task ×10
rake ×4
ruby ×2
command-line ×1
database ×1
encoding ×1
heroku ×1
initializer ×1
oauth-2.0 ×1
postgresql ×1
shell ×1