我最近更改了我在Heroku上运行的Rails应用程序的域名.我将原始版本重定向到新版本,并且在过去的几个月中一直在运行SSL.我尝试从原始域中删除SSL,因为它只是重定向.
我做了我认为应该做的一切:
config.force_ssl = false在production.rb中关闭应用程序中的SSL如果我去myapp.herokuapp.com,一切都很好,但如果我去myapp.com或www.myapp.com它会自动尝试带我到网站的安全版本,https: //myapp.com ,我从浏览器中收到标准的安全错误警告.
我错过了什么吗?这是一个缓存问题吗?是否需要时间才能启动DNS更改?我尝试过几台机器/浏览器,问题在所有机器/浏览器上都是一致的.
最糟糕的情况是,我绝对可以重新添加SSL端点,但它看起来有点过分.
我刚刚将我的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) 我正在尝试通过使用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响应而不是默认重定向?
我在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完成这个.
我正在使用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语句中.它是一个类型问题,语法?任何提示非常感谢.
我很新,在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