小编Flo*_*son的帖子

Rails控制台:在`require':无法加载这样的文件 - readline(LoadError)

我的Rails应用程序中有一些错误,我试图通过发出以下命令来启动Rails控制台:

rails console
Run Code Online (Sandbox Code Playgroud)

无论我尝试什么,我总是得到同样的错误:

/usr/local/rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/irb/completion.rb:9:in `require': cannot load such file -- readline (LoadError)
    from /usr/local/rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/irb/completion.rb:9:in `<top (required)>'
    from /opt/mammie/web/icosole/vendor/bundle/ruby/2.1.0/gems/railties-3.1.3/lib/rails/commands/console.rb:3:in `require'
    from /opt/mammie/web/icosole/vendor/bundle/ruby/2.1.0/gems/railties-3.1.3/lib/rails/commands/console.rb:3:in `<top (required)>'
    from /opt/mammie/web/icosole/vendor/bundle/ruby/2.1.0/gems/railties-3.1.3/lib/rails/commands.rb:37:in `require'
    from /opt/mammie/web/icosole/vendor/bundle/ruby/2.1.0/gems/railties-3.1.3/lib/rails/commands.rb:37:in `<top (required)>'
    from script/rails:6:in `require'
    from script/rails:6:in `<main>'
Run Code Online (Sandbox Code Playgroud)

我真的尝试过在网上找到的所有可能的解决方案,因为很多人遇到了同样的错误.不幸的是,似乎没有任何效果.当我尝试以下命令时:

ruby /usr/local/rvm/src/ruby-2.1.1/ext/readline/extconf.rb
Run Code Online (Sandbox Code Playgroud)

我得到以下输出

checking for tgetnum() in -lncurses... yes
checking for readline/readline.h... yes
checking for readline/history.h... yes
checking for readline() in -lreadline... no
checking for readline() in -ledit... no
checking for editline/readline.h... no
*** /usr/local/rvm/src/ruby-2.1.1/ext/readline/extconf.rb failed ***
Run Code Online (Sandbox Code Playgroud)

表明缺少某些东西,但使用apt-get安装readline也没有任何区别.我猜它可能与不兼容的gem版本有关,因为控制台前一段时间曾短暂工作过.readline是否存在任何已知版本问题?很多人似乎都遇到过这个宝石的问题.

ruby console ruby-on-rails readline

10
推荐指数
3
解决办法
2万
查看次数

MySQL BEFORE UPDATE触发器 - 更改值

所以,我有一个名为employees的MySQL表.

ID    name    meta
0     jack    ok
1     anne    del
Run Code Online (Sandbox Code Playgroud)

我想写一个触发器来阻止meta ='del'的行来更新元字段.所以,如果我这样做:

UPDATE employees SET meta = 'busy' WHERE ID = 0
Run Code Online (Sandbox Code Playgroud)

该行应该更新,元将"忙"

但当我这样做时:

UPDATE employees SET meta = 'busy' WHERE ID = 1
Run Code Online (Sandbox Code Playgroud)

元字段应该仍然是'del'

我试过了:

delimiter $$
CREATE TRIGGER updateEmployees
BEFORE UPDATE ON employees
FOR EACH ROW 
BEGIN
    IF OLD.meta = 'del' THEN
        NEW.meta = 'del'
    END IF;
END$$
delimiter ;
Run Code Online (Sandbox Code Playgroud)

但MySQL返回时出现语法错误.有任何想法吗?

mysql sql triggers

9
推荐指数
2
解决办法
3万
查看次数

HTML5视频格式 - 兼容性

所以,我正在建立一个用户可以上传观看视频的网站.我正在使用标准的HTML5视频播放器(<video...> <src>...)目前,我使用多种来源:MP4,OGG和WEBM,以实现跨浏览器兼容性

由于保持三种格式既CPU占用(转换)以及占用宝贵的磁盘空间这一事实,我开始寻找需要确定是否真的需要支持这三种格式

根据我在维基百科(http://en.wikipedia.org/wiki/HTML5_video)上找到的图表,OGG和MP4应该足够了,因为所有浏览器似乎都支持这些格式中的至少一种

......或者我错过了什么?

video html5 mp4 ogg webm

8
推荐指数
1
解决办法
2万
查看次数

PhoneGap:修改config.xml以向Info.plist离子iOS添加属性

对于我的应用程序,我需要为iOS的Info.plist文件添加一些设置.我认为最好的方法是将这些设置添加到我的config.xml文件中(我正在使用PhoneGap).当我将以下内容添加到config.xml文件并运行时

cordova build ios
Run Code Online (Sandbox Code Playgroud)

要么

cordova update platform ios
Run Code Online (Sandbox Code Playgroud)

我的Info.plist文件中没有添加任何内容,我完全不知道为什么会这样.构建显示"成功",所以我认为没有语法错误.

我试过了:

<platform name="ios">
    <allow-intent href="itms:*" />
    <allow-intent href="itms-apps:*" />
    <config-file target="*-Info.plist" parent="NSAppTransportSecurity">
        <array>
            <dict>
                <key>NSExceptionDomains</key>
                <array>
                    <dict>
                        <key>s3.amazonaws.com</key>
                        <array>
                            <dict>
                                <!--Include to allow subdomains-->
                                <key>NSIncludesSubdomains</key>
                                <true/>
                                <!--Include to allow insecure HTTP requests-->

<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
                                <true/>
                                <!--Include to specify minimum TLS version-->
                                <key>NSTemporaryExceptionMinimumTLSVersion</key>
                                <string>TLSv1.1</string>
                            </dict>
                        </array>
                    </dict>
                </array>
            </dict>
        </array>
    </config-file>
</platform>
Run Code Online (Sandbox Code Playgroud)

<platform name="ios">
    <allow-intent href="itms:*" />
    <allow-intent href="itms-apps:*" />
    <config-file target="*-Info.plist" parent="NSAppTransportSecurity">
        <dict>
            <key>NSExceptionDomains</key>
                <dict>
                <key>s3.amazonaws.com</key>
                <dict>
                    <!--Include to allow …
Run Code Online (Sandbox Code Playgroud)

xml ios phonegap-plugins cordova phonegap-build

8
推荐指数
1
解决办法
5014
查看次数

Cordova Geolocation插件在Android上返回空位置对象

我在Geolocation Cordova插件(org.apache.cordova.geolocation)上遇到了一些问题.它在iOS上运行良好,但在Android上根本没有.

据我了解,该插件曾经包含原生的Android代码,但在某些时候被删除了,因为它太错误/慢,本机Web HTML5实现更加稳定和快速.

如果我使用仍然具有本机代码的最新插件版本(0.3.2),它确实有效(但很慢,实际上并非总是如此).但是当它确实返回时,总是填充位置对象.

如果我使用最新的插件版本(1.0.1),getCurrentPosition()会立即返回一个空对象({}).它不会引发错误.

如果我完全删除插件,并手动将权限添加到Android项目:

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
Run Code Online (Sandbox Code Playgroud)

同样的事情发生了.我只是无法让它工作,但它没有意义.Android控制台中不显示任何错误.有什么想法吗?

html5 android geolocation cordova cordova-plugins

8
推荐指数
1
解决办法
2907
查看次数

将 Google Cloud Storage 中的文件添加到云端硬盘

我正在 NodeJS 中开发后端服务。它通过请求临时链接并将此链接发送到第三方分析服务来处理来自 Google Cloud Storage 的图像。我还希望将图像添加到共享的 Google Drive 文件夹中。是否有任何可能的方法可以轻松做到这一点(例如,通过使用 Drive API 并将链接发布到文件,而不是下载文件并随后上传)。换句话说:Drive API 是否接受文件链接,而不是上传文件?或者有没有其他聪明的方法可以轻松地将 Google Cloud 共享到云端硬盘(因为它都是 Google 服务)。

谢谢

google-api google-cloud-storage google-drive-api google-cloud-platform

8
推荐指数
2
解决办法
6917
查看次数

Angular.JS中的Resource + Socket.io工厂

我正在使用Angular.JS编写Web应用程序,它使用Express和Socket.IO(Node模块)编写的后端系统.我在Angular.JS写了一个工厂来列出元素:

angular.module('myApp.api', ['ngResource'])
    .factory('Element', function($resource, Socket) {
        return $resource(
            'http://localhost:4000/elements/:id',
            { id : '@id' },
            { 
                update: { method: 'PATCH' }
            }
        );
    });
Run Code Online (Sandbox Code Playgroud)

这个工厂在ElementCtrl中使用并相应地显示元素,它完美地工作:

angular.module('myApp.element', [])
    .controller('ElementCtrl', ['$scope', 'Element', function($scope, Element) {
    var elements = Element.query();
}]);
Run Code Online (Sandbox Code Playgroud)

但是,我还在后端实现了Socket.io,如果元素添加到元素列表中,它会发送一条消息.我想改变Element工厂或者找一些其他方法来为控制器透明地处理它.我的客户端Socket.io代码如下:

angular.module('myApp.socket', [])
    .factory('ElementRealtime', function($resource, Socket) {
        var socket = io.connect('http://localhost:4000');
        return {
            on: function (eventName, callback) {
              socket.on(eventName, function () {  
                var args = arguments;
                $rootScope.$apply(function () {
                  callback.apply(socket, args);
                });
              });
            },
            emit: function (eventName, data, callback) {
              socket.emit(eventName, data, …
Run Code Online (Sandbox Code Playgroud)

javascript sockets node.js angularjs angular-resource

5
推荐指数
0
解决办法
616
查看次数

Rails 放入控制台

在我的 Rails 应用程序中,在某些情况下,使用 puts 命令输出代码(用于调试目的)。无论如何要在 rails 控制台中遵循此输出(使用 rails c 命令)?或者有没有其他方法可以在 rails 控制台中调试/查看日志?

谢谢!

ruby debugging console ruby-on-rails

2
推荐指数
1
解决办法
3801
查看次数

循环中使用promises(节点)

我正在研究NodeJS后端服务,并使用promises加载任何数据.现在,我想制作来自不同来源的项目组合(数组).我有以下解决方案,但我不认为这是解决这类问题的正确方法.

var results = [];
loop(items, index, data, results).then(function() {
    console.log(results);
});

function loop(items, index, data, results) {
    return utils.getPromise(function(resolve, reject) {
        if (index === items.length) {
            // Stop
            resolve();
        } else {
            doAction(items[index], data).then(function(result) {
                if (result) {
                    mergeResults(results, result)
                } else {
                    loop(items, index + 1, data, results).then(resolve, reject);
                }
            }, reject);
        }
    });
}

function doAction(item, data) {
    return utils.getPromise(function(resolve, reject) {
        item.doIt(data).then(resolve, reject);
    });
}
Run Code Online (Sandbox Code Playgroud)

我认为正确的方法是立即返回一个承诺,并在运行中添加结果,但我不确切知道如何做到这一点.有什么建议?

javascript design-patterns node.js promise

0
推荐指数
1
解决办法
869
查看次数