Tag: ruby on rail

如何附加回WEBrick服务器

我以分离模式启动服务器(-d),如何附加回它以便我可以杀死服务器)。

使用Devise创建其他相关模型

我已经开始使用Devise实现一个新项目,这对于处理用户来说非常棒。 但是,当用户注册时,他们不仅要创建User模型,还需要创建代表公司的相关Account模型。 其他用户也将belongs_to此Account模型。 我似乎无法在Devise中找到这个钩子,虽然它看起来像一个非常常见的模式。 这是最好的做法是什么? 我还应该提一下,在sign_up表单上需要提供一些Account字段,所以在User模型中就是这样的: after_create :make_sure_account_exists def make_sure_account_exists if self.account.nil? @account = self.create_account({ :company_name => ‘???’ }) end ..因为我不知道如何获得公司名称。

在Ruby on Rails中使用夹具播种数据是危险的

我有需要驻留在我的数据库(国家,地区,运营商等)的初始数据。 我有一个任务rake db:seed将为数据库设定种子。 namespace :db do desc “Load seed fixtures (from db/fixtures) into the current environment’s database.” task :seed => :environment do require ‘active_record/fixtures’ Dir.glob(RAILS_ROOT + ‘/db/fixtures/yamls/*.yml’).each do |file| Fixtures.create_fixtures(‘db/fixtures/yamls’, File.basename(file, ‘.*’)) end end end 我有点担心,因为这个任务擦除我的数据库干净并加载初始数据。 这甚至可能在生产中不止一次这样做的事实吓跑了我。 这是正常的,我只需要谨慎吗? 或者人们通常以某种方式保护这样的任务?

将db转储到rails中的yml fixture的标准方法是什么?

我已经看到一些插件和自定义rake任务将活动数据库转储到固定装置,但我不确定主流技术是什么。 基本上,我想要与rake相反:db:fixtures:load,以便我可以在部署时将基本数据库信息(管理员用户帐户,一个)放入svn中。 我不想手动创建夹具,例如需要很长时间的样本数据。 当我们部署时,我希望能够运行 rake db:migrate rake db:fixtures:load 并参加比赛。 在rails中执行此操作的最佳/首选方法是什么? 编辑: 所以似乎没有标准的方法来执行db:fixtures:load的相反rake任务。 我不想使用迁移,因为我想要一个标准的方法来为我的所有项目执行此操作,并且我不喜欢在迁移中添加任何可能的管理员帐户的想法。 其次,我一直在重新思考使用灯具的想法。 我决定使用yaml_db,因为它使用rake任务: rake db:data:dump rake db:data:load 数据将在YAML文件中结束而不会破坏测试装置(可能会有所不同,现在我更仔细地考虑这个)。 此外,如果像Heroku这样的主要发行工具正在使用它,我不必担心支持/长寿问题。 我想这最接近我会找到的“标准”。 感谢所有的好评。

curl命令行POST

我正在尝试模拟我的简单Rails脚手架Web服务的POST。 脚手架创建的文件尚未更改。 当我从网站表单发布数据时,会正确创建记录。 当我尝试使用curl进行POST时,会在数据库中创建一条记录,但它在字段中具有NULL值,但“updated_at”和“created_at”除外。 我是命令行curl的新手,所以我可能没有正确地做到这一点。 curl -d “name=Gazoo&friend=Rubble” localhost:3000/flintstones 我从WEBrick那里得到了这个: 开始POST“/ flintstones”for 127.0.0.1 at Thu Apr 28 18:04:47 -0600 2011 Processing by FlintstonesController #create as Parameters:{“name”=>“Gazoo”,“friend”=>“Rubble”} AREL (0.3ms)INSERT INTO“flintstones”(“name”,“friend”,“created_at”,“updated_at”)VALUES(NULL,NULL,’2011-04-29 00:04:47.779902’,’2011-04- 29 00:04:47.779902’)重定向到http:// localhost:3000 / flintstones / 4 为json做了GET之后 curl localhost:3000 / flintstones.json 我收到: [{ “打火石:{” 名称 “:NULL,” created_at “:” 2011-04-29T00:09:58Z”, “的updated_at”: “2011-04-29T00:09:58Z”, “ID”:4, “朋友”:空}}] 为什么我的字段中为空? […]

如何使用Rails命名路由助手与参数?

鉴于这条路线 match ‘posts/hello/:name/:title’ => ‘post#show’, :as => :hello 我可以调用hello_path的方式是什么? 如果我调用hello_path(@post) ,它会尝试做什么? 我希望:name和:title文件会自动绑定到路径,但似乎rails只知道如何从模型对象中获取:id。 相反,它只有在我称之为的情况下才有效 @post.name, :title=>@post.title) %> (缺乏适当的文件真的让我伤心)

使用rails进行带宽管理?

我想知道是否有人知道你可以通过某种方式管理rails应用程序中的带宽而不依赖于Web服务器。 例如,每个帐户都有带宽限制。 进出的交通量从月度补贴中扣除?

为什么Rails db:migrate在Rails中没有向模式文件中添加函数?

我最近通过迁移向我的数据库添加了一些SQL函数,它们工作得很好。 代码工作,数据库工作,测试没有。 schema.rb文件告诉我它是最新版本(并且它是正确的),但它只包含表和索引的定义,而不是我添加的函数。 我在迁移中通过“execute()”方法添加了这些函数,并且需要在测试数据库中将它们传递给RSpec测试(公司策略规定在修复之前我不能提交此更改)。 有谁知道为什么会这样,或者如何解决它? 我可以手动进入MySQL命令行并添加函数,但是下次有人执行db:test:prepare时它们会被删除。 我需要一个可以自动化的解决方案。 感谢您的帮助和回复, -Mike Trpcic

设计在post上登出到不同的路线

我和Devise有一个非常奇怪的问题。 我有一个路由设置,接受get和post请求。 在获取时,它显示表单,在post上,它提交它。 当我向路线发送XHR后,当它到达那里时,它告诉我我没有登录,并且发送给我一个未经授权的401。 之后我必须登录,然后我可以再试一次。 我一直试图弄清楚这几个小时,我能够弄清楚的是我的控制器方法没有被调用。 我在过滤之前输入了我自己的自定义身份validation,它刚刚确认,当我的rails应用程序被调用时,用户不再登录。 此外,如果我打开表格,但不提交,我可以继续正常。 在那个XHR的某个地方,它正在制定设计。 如果您有任何想法请帮忙,我不知道现在发生了什么…… 谢谢 斯科特 编辑:添加相关的代码片段 的routes.rb match ‘projects/:p/filebox’ => ‘projects#show’, :via => [“get”,”post”], :as => ‘project_filebox’ projects_controller.rb before_filter :authenticate_user! # <— By the time this gets called, the user is logged out def show # ^^^^ Doesnt get called. Logger shows that it recognized route though logger.debug […]

什么用户正在运行我的Rails应用程序?

我正试图在Apache,Passenger 3.0.0和Rails 3.0.3下部署一个简单的Rails应用程序。 我遇到了各种奇怪的错误。 主要围绕我认为与bundler或RAILS_ENV相关的内容。 关于应用程序,只有非默认的事情是开发和测试环境使用SQLite3,生产使用MySQL。 当从Web浏览器访问应用程序时,Passenger会抛出有关gems(sqlite3)的错误,这些错误是(在Gemfile和database.yml中)声明为非生产环境的一部分。 如何判断服务器尝试运行我的Rails应用程序的用户是什么? 我想确保为该用户正确设置RAILS_ENV,因为我认为Passenger因某种原因试图在开发模式下运行此应用程序。 编辑:添加了ps aux | grep httpd结果 ps aux | grep httpd myserver:current elvis$ ps aux | grep httpd elvis 4424 0.4 0.0 66152 192 s000 S+ 11:03AM 0:00.00 grep httpd _www 1950 0.0 0.2 93024 2544 ?? S 11:40PM 0:01.23 /usr/sbin/httpd -D FOREGROUND root 1918 0.0 1.0 […]