小编Lev*_*Lev的帖子

为Heroku应用程序禁用SSL

我最近更改了我在Heroku上运行的Rails应用程序的域名.我将原始版本重定向到新版本,并且在过去的几个月中一直在运行SSL.我尝试从原始域中删除SSL,因为它只是重定向.

我做了我认为应该做的一切:

  • config.force_ssl = false在production.rb中关闭应用程序中的SSL
  • 将DNS ALIAS和CNAME更改为指向"myapp.herokuapp.com"
  • 删除了SSL端点和证书

如果我去myapp.herokuapp.com,一切都很好,但如果我去myapp.com或www.myapp.com它会自动尝试带我到网站的安全版本,https: //myapp.com ,我从浏览器中收到标准的安全错误警告.

我错过了什么吗?这是一个缓存问题吗?是否需要时间才能启动DNS更改?我尝试过几台机器/浏览器,问题在所有机器/浏览器上都是一致的.

最糟糕的情况是,我绝对可以重新添加SSL端点,但它看起来有点过分.

ssl heroku ruby-on-rails-3

11
推荐指数
2
解决办法
5345
查看次数

Heroku ruby​​ buildpack错误 - 未定义的局部变量或方法`install_language_pack_gems'

我刚刚将我的Rails 3.2.16应用程序的ruby版本从1.9.2升级到2.0.0,一切都在本地工作正常.但是,当试图推送到Heroku时,它无法编译.

它检测ruby版本,开始安装依赖项,然后崩溃:

-----> Compiling Ruby/Rails
-----> Using Ruby version: ruby-2.0.0
-----> Installing dependencies using 1.5.2
   Ruby version change detected. Clearing bundler cache.
   Old: ruby 1.9.3p484 (2013-11-22 revision 43786) [x86_64-linux]
   New: ruby 2.0.0p353 (2013-11-22 revision 43784) [x86_64-linux]
sh: Syntax error: EOF in backquote substitution
sh: Syntax error: EOF in backquote substitution
/app/tmp/buildpacks/ruby/lib/language_pack/ruby.rb:760:in `block in purge_bundler_cache': undefined local variable or method `install_language_pack_gems' for #<LanguagePack::Rails3:0x00000000c1d090> (NameError)
Run Code Online (Sandbox Code Playgroud)

看起来很简单,但我并不特别想搞乱buildpack.

对于在Ruby 2.0上运行的应用程序也会发生这种情况

-----> Installing dependencies using 1.5.2
       Ruby version change detected. Clearing bundler cache.
       Old: …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails heroku ruby-on-rails-3.2 ruby-2.0

9
推荐指数
1
解决办法
544
查看次数

在Rails中通过JS设计注册#update

我正在尝试通过使用AJAX的Devise更新用户模型,并让Devise使用正确的javascript文件进行响应.

我想将表单远程提交到注册#update action,但这不适用于Devise的默认响应,它使用RegistrationsController中的以下内容:

respond_with resource, :location => after_update_path_for(resource)
Run Code Online (Sandbox Code Playgroud)

上面尝试重定向到默认路由而不是呈现update.js.erb文件.我能够覆盖该操作并使其与以下更改一起使用:

respond_to do |format|
    format.html
    format.js
 end
Run Code Online (Sandbox Code Playgroud)

但是,这似乎是非常暴力的,因为我压倒整个行动.是否有一种简单的方法让Devise知道用javascript响应而不是默认重定向?

javascript ajax ruby-on-rails devise ruby-on-rails-3

7
推荐指数
1
解决办法
3686
查看次数

使用pg_search匹配特殊字符(例如#,+)

我在Rails应用程序中使用pg_search gem来搜索用户 - 他们的bios和相关的技能模型.用户是开发人员,所以他们的技能包括"CSS","C++","C#","Objective C"等等......

我最初使用以下搜索范围:

pg_search_scope :search,
  against: [:bio],
  using: {tsearch: {dictionary: "english", prefix: true}},
  associated_against: {user: [:fname, :lname], skills: :name}
Run Code Online (Sandbox Code Playgroud)

但是,如果在这种情况下搜索"C++",则会得到包含"CSS"(包括其他内容)的结果.我更改了范围以使用"简单"字典并删除了前缀:

pg_search_scope :search_without_prefix,
  against: [:bio],
  using: {tsearch: {dictionary: "simple"}}, 
  associated_against: {user: [:fname, :lname], skills: :name}
Run Code Online (Sandbox Code Playgroud)

这解决了一些问题 - 例如,搜索"C++"并不显示"CSS".但是,搜索"C++"或"C#"仍然匹配列出"C"或"Objective C"的用户

我绝对可以做一个基本的ILIKE匹配,但如果可能的话,希望用pg_search完成这个.

ruby ruby-on-rails pg rails-postgresql pg-search

5
推荐指数
1
解决办法
597
查看次数

Elasticsearch groovy脚本检查数组中的参数包含

我正在使用elasticsearch(v2.0.0)在Rails中进行搜索,并希望添加到我们的自定义脚本中进行评分,但我要么弄乱语法,要么完全缺少其他内容.这一切都可以在没有检查数组的脚本的情况下工作,因此这是唯一不起作用的部分.

所以对于索引,recipe_user_ids是一个整数数组:

indexes :recipe_user_ids, type: 'integer'
Run Code Online (Sandbox Code Playgroud)

然后在搜索查询中,我指定脚本文件的参数和哪个脚本文件:

functions: [{
  script_score: {
    params: { current_user_id: user.id },
    script_file: 'ownership_script'
  }
}]
Run Code Online (Sandbox Code Playgroud)

和ownership-script.groovy文件:

if (current_user_id == doc['user_id'].value) { owner_modifier = 1.0 } else { owner_modifier = 0.0 }
if (doc['recipe_user_ids'].values.contains(current_user_id)) { recipe_user_modifier = 50.0 } else { recipe_user_modifier = 0.0 }
(_score + (doc['score_for_sort'].value + owner_modifier + recipe_user_modifier)*5)/_score
Run Code Online (Sandbox Code Playgroud)

我没有得到任何错误,但结果似乎与我在recipe_user_ids数组确实包含时所期望的结果相匹配current_user_id,因此一切都落入了else语句中.它是一个类型问题,语法?任何提示非常感谢.

arrays groovy elasticsearch

5
推荐指数
1
解决办法
350
查看次数

在单个搜索文本字段中搜索多个关键字(RAILS)

我很新,在Rails中搜索数据库.我有一个模型和数据库,在'name'属性下有一个名称列表.我希望能够将搜索关键字输入到单个搜索字段中,并且此输入可以是一个字或两个字或更多,具体取决于用户想要的结果的具体程度.

现在,我正在使用如下所示的丑陋内容,最多可以执行3个搜索字词.有没有办法让'search_length'关键字成为动态?find方法显然是重复的,但我不确定如何自动化它并且在其他地方没有找到任何有用的建议.

def self.search(search)

  if search
    search_length = search.split.length
    find(:all, :conditions => ['name LIKE ? AND name LIKE ? AND name LIKE ?', 
    "%#{search.split[0]}%", "%#{search.split[1]}%", 
    "%#{search.split[search_length1]}%"])
  else
    find(:all)
  end
end
Run Code Online (Sandbox Code Playgroud)

除此之外,到目前为止,爱Rails.

非常感谢Lev

search ruby-on-rails-3

3
推荐指数
1
解决办法
4749
查看次数