Tag: ruby

在Rails中从一个gem重写一个模块方法

在我的Oracle版本中,will_paginate gem被打破了。 WillPaginate模块中默认的paginate_by_sql方法会在查询中插入一个额外的“AS”,导致它失败。 代码本身很容易修复,但我不确定让Rails接受我的更改的最佳方式。 我不想更改gem本身的代码,因为这会使我的代码在其他机器上断开。 我试图创build一个lib / test.rb文件,其中包含: module WillPaginate def paginate_by_sql (my code goes here) end end 并要求从environment.rb,但它没有拿起我的变化。 我也尝试要求从控制器/ application.rb,但再次,不接受我的变化。 暂时我通过重写特定模型本身的方法来实现它,但是这有点破解,意味着我不能在这个项目的任何其他模型中使用它。 我确信有一个简单的方法来做到这一点,但我没有任何运气使用谷歌追踪它。

Ruby在特定的目录下运行shell命令

我知道如何在Ruby中运行shell命令,如下所示: %x[#{cmd}] 但是,如何指定一个目录来运行这个命令呢? 是否有类似于subprocess的类似的炮击方式。Python中的打开方式: subprocess.Popen(r'c:\mytool\tool.exe', cwd=r'd:\test\local') 谢谢!

Rails 4 +devise:密码重置总是在生产服务器上给出一个“令牌无效”错误,但在本地工作正常。

我有一个Rails 4应用程序设置为使用devise,我运行密码重置问题。 我有邮件设置,密码重置电子邮件发送罚款。 提供的链接有正确的reset_password_token分配给它,我检查了该数据库。 但是,当我提交表单格式正确的密码,它会给出一个错误,说重置令牌是无效的。 但是,完全相同的代码在本地通过rails s 。 电子邮件发送,我实际上可以重置密码。 我使用的代码只是标准的devise代码,我没有覆盖任何它。 也许这是与Apache的东西? 我不太熟悉它。 有没有人有任何想法?

无论SSH密钥如何,Capistrano都要求在部署时input密码

我的SSH密钥无疑是正确设置的,因为我从来没有提示input密码时使用SSH。 但是,capistrano在部署cap deploy时仍然要求input密码。 当我使用cap deploy:setup时,它不要求input密码cap deploy:setup尽pipe如此,奇怪的是, 如果没有密码提示,这会使部署周期更加顺畅。 细节:我正在将一个Sinatra应用程序部署到Dreamhost共享帐户(使用Passenger)。 我跟着一个教程做了很久很久以前的工作。 有些事情从此爆发了。 我正在使用capistrano(2.5.9)和git版本1.6.1.1。 这是我的Capfile: load 'deploy' if respond_to?(:namespace) # cap2 differentiator set :user, 'ehsanul' set :domain, 'jellly.com' default_run_options[:pty] = true # the rest should be good set :repository, "ehsanul@jellly.com:git/jellly.git" set :deploy_to, "/home/ehsanul/jellly.com" set :deploy_via, :remote_cache set :scm, 'git' set :branch, 'deploy' set :git_shallow_clone, 1 set :scm_verbose, true […]

我如何删除特殊字符?

我正在练习Ruby和正则expression式删除某些不需要的字符。 例如: input = input.gsub(/<\/?[^>]*>/, '') 和特殊字符,例如☻或™: input = input.gsub('&#', '') 这只留下数字,好的。 但是这只有在用户input一个特殊字符作为代码时才有效,如下所示: ™ 我的问题:如果用户input没有代码的特殊字符,如何删除特殊字符,如下所示: ™ ☻

我应该在ruby脚本中定义一个主要方法吗?

在python中,一个模块不一定要有主函数,但通常使用下面的习惯用法: def my_main_function(): … # some code if __name__=="__main__": # program's entry point my_main_function() 我知道Ruby也不一定有main方法,但是我应该遵循一些最佳实践吗? 我应该命名我的方法main或什么? 关于主要方法的维基百科页面并没有真正帮助我。 作为一个侧面说明,我也看到了python中的以下习惯用法: def my_main_function(args=[]): … # some code if __name__=="__main__": # program's entry point import sys sys.exit(my_main_function(sys.argv))

Rails迁移 – types转换的change_column

我已经google'd一点点,似乎有没有令人满意的答案我的问题。 我有一个stringtypes的列的表。 我想运行以下迁移: class ChangeColumnToBoolean < ActiveRecord::Migration def up change_column :users, :smoking, :boolean end end 当我运行这个时,我得到以下错误 PG::Error: ERROR: column "smoking" cannot be cast automatically to type boolean HINT: Specify a USING expression to perform the conversion. : ALTER TABLE "users" ALTER COLUMN "smoking" TYPE boolean 我知道我可以使用纯SQL执行此迁移,但是如果我可以使用Rails来完成,那么仍然会更好。 我经历了Rails代码,似乎没有这种可能性,但也许有人知道一种方式? 我不感兴趣: – 纯SQL – 删除列 – 创build另一列,转换数据,删除原来的,然后重命名

如何计算代码行数?

我试图rake stats但似乎很不准确。 也许它忽略了几个目录?

heroku打开 – 没有指定的应用程序

我刚刚创build了一个简单的Rails应用程序 rails new myapp 然后使用以下命令创buildheroku堆栈: heroku create –stack cedar 但是当我尝试使用Heroku打开应用程序时: heroku open 我得到: ! No app specified. ! Run this command from an app folder or specify which app to use with –app <app name> 和这个: $ heroku open –app myapp 给我这个: ! App not found 我错过了什么明显的?

警告! PATH没有正确设置,通常这是由shell初始化文件造成的

每当我到一个带有.rvmrc文件的文件夹时,都会有一个警告: Warning! PATH is not properly set up, '/home/me/.rvm/gems/ruby-2.0.0-p247/bin' is not available, usually this is caused by shell initialization files – check them for 'PATH=…' entries, to fix run: 'rvm use ruby-2.0.0-p247'. 我做了rvm use ruby-2.0.0-p247 ,但警告仍然存在。 注意 :没有错误,我能够运行我的应用程序就好,但警告是非常烦人的。 有任何想法吗?